Golang 基本常量声明及 iota 使用

news2025/2/28 21:34:19

文章目录

  • 一、局部常量声明
  • 二、全局常量声明
  • 三、多行常量定义,值表达式为空时自动继承前一个
  • 四、常量声明 - iota

一、局部常量声明

package main

import "fmt"

func main() {
	//局部常量声明
	//方式一:主动声明类型
	const lengthA int = 10
	//方式二:省略类型,自动推断类型
	const lengthB = 30

	//多行常量声明
	const (
		//可以主动声明类型
		lengthC int = 40
		//也可以自动推断类型
		lengthD = 50
		//多行声明中的多个变量,可以类型不同
		stringE = "字符串E"
	)

	fmt.Println("lengthA = ", lengthA)
	fmt.Println("lengthB = ", lengthB)
	fmt.Println("lengthC = ", lengthC)
	fmt.Println("lengthD = ", lengthD)
	fmt.Println("stringE = ", stringE)

}

image-20230812164604637

二、全局常量声明

普通声明时,与局部变量声明的方式一致:

package main

import "fmt"

//全局常量声明
//方式一:主动声明类型
const gContA int = 10

//方式二:省略类型,自动推断类型
const gContB = 10

//多行常量声明
const (
	//可以主动声明类型
	gContC int = 40
	//也可以自动推断类型
	gContD = 50
	//多行声明中的多个变量,可以类型不同
	gStringE = "字符串E"
)

func main() {
	fmt.Println("gContA = ", gContA)
	fmt.Println("gContB = ", gContB)
	fmt.Println("gContC = ", gContC)
	fmt.Println("gContD = ", gContD)
	fmt.Println("gStringE = ", gStringE)

}

image-20230812165007065

三、多行常量定义,值表达式为空时自动继承前一个

多行常量声明时,如果常量值表达式为空,则会和前一个常量的值表达式相同。

package main

import "fmt"

//多行常量声明时,如果常量值表达式为空,则会和前一个常量的值表达式相同。
const (
	constA = 10
	constB  //其实等于 constB=10
	constC //其实等于 constC=10
	constD = 30
	constE //其实等于 constE=30
	constF //其实等于 constF=30
)

func main() {
	fmt.Println("constA = ", constA)
	fmt.Println("constB = ", constB)
	fmt.Println("constC = ", constC)

	fmt.Println("constD = ", constD)
	fmt.Println("constE = ", constE)
	fmt.Println("constF = ", constF)
}

image-20230812171828206

四、常量声明 - iota

iota 是常量声明时的一个自增的特殊变量;

iota 在const 内部的第一行出现时,值为0,后续每新增一行,iota都会自增1。(可以理解为行索引或者行号)

具体用法,直接看代码和注释:

package main

import "fmt"

//多行常量声明时,如果常量值表达式为空,则会和前一个常量的值表达式相同。
const (
	//iota=0
	constAA = iota
	//iota=2
	constBB
	//iota=3
	constCC
	//iota=4,constDD = 10 * 4
	constDD = 10 * iota
	//iota=5,constEE = 10 * 5
	constEE
	//iota=6,constEE = 10 * 6
	constFF
	constGG, constHH = iota, iota * 10
	constII, constJJ
)

func main() {
	fmt.Println("constAA = ", constAA)
	fmt.Println("constBB = ", constBB)
	fmt.Println("constCC = ", constCC)

	fmt.Println("constDD = ", constDD)
	fmt.Println("constEE = ", constEE)
	fmt.Println("constFF = ", constFF)
	fmt.Println("constGG = ", constGG)
	fmt.Println("constHH = ", constHH)
	fmt.Println("constII = ", constII)
	fmt.Println("constJJ = ", constJJ)
}

image-20230812173740075

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/869072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tomcat设置PermSize

最近tomcat老是报错,查看了日志出现PermGen 内存不够用,重启tomcat后查询使用情况 通过启动参数发现没有设置 PermGen,继续通过jmap查看 jmap -heap 21179 发现99%已使用,而且默认是30.5M,太小了,这里设置成256M 1. 创建setenv.sh文件 在/usr/local/tomcat/bin目录下创建一个…

CDN是什么?CDN的好处

近段时间开组会的时候组内的大佬多次提及CDN这个名词,因为以前没有接触过,所以上网查询后写一篇博客来巩固自己对于CDN的理解 1、什么是CDN CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新…

Linux命令200例:ls用于列出指定目录下的文件和子目录

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…

Java实现对称加密(DES,AES)快速入门示例

对称加密是使用相同的密码进行加密和解密, 对称加密实现简单,安全性相比非对称加密较弱, 常用的对称加密算法有 DES,AES以及PDE等,关于对称加密相关概念参考: 对称加密、非对称加密深度解析 本篇介绍Java的…

【CSH 入门基础 5 -- csh 文件监控脚本实现】

文章目录 背景CSHLL 代码实现cshell 中 unset 的介绍bash 中监控文件的方法 背景 由于开发代码是在外网编译,而镜像的烧写是在内网中的EDA工具中进行的,所以就需要先将代码在外网编译好后,再通过FTP工具将镜像传输到内网中,然后在…

MyBatis配置文件:配置连接数据库的环境,实现数据库连接

目录 1、MyBatis配置数据库环境的连接方式 1.1连接方式一:MyBatis核心配置文件配置数据库连接信息 1.2连接方式二:在MyBatis核心配置文件中引入properties文件,配置数据库的环境 2、MyBatisd核心配置文件连接数据库的环境完整配置信息 3…

Win11麦克风说话别人听不见解决办法

Win11麦克风说话别人听不到声音怎么办?麦克风没有声音可能有三种原因造成的,第一种声音设置里面确认麦克风设备是否启用,第二种查看麦克风的访问权限,第三种是检查驱动是否有问题,下面就简单的讲一下解决方法&#xff…

【loadbalancer】还在用Ribbon?试试Spring自带的LoadBalancer吧

Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器, 用来替代Ribbon。 Spring官方提供了两种客户端都可以使用loadbalancer: RestTemplate:Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程…

【第二阶段】it关键字

1.invoke()函数 meThod1(1,2,3)等价meThod1.invoke(1,2,3) fun main() {val meThod1:(Int,Int,Int)->String{n1,n2,n3->val num"kotlin"println("num$num,n1$n1,n2$n2,,n3$n3")"num$num,n1$n1,n2$n2,,n3$n3,"}//调…

Vue响应式数据的原理

在 vue2 的响应式中,存在着添加属性、删除属性、以及通过下标修改数组,但页面不会自动更新的问题。而这些问题在 vue3 中都得以解决。 vue3 采用了 proxy 代理,用于拦截对象中任意属性的变化,包括:属性的读写、属性的…

前端使用ReadableStream.getReader来处理流式渲染

文章目录 前言一、纯css二、vue-typed-js插件1.安装2.注册3.使用总结 三、ReadableStream1.ReadableStream是什么?2.ReadableStream做什么?3.ReadableStream怎么用 前言 需求:让接口返回的文章根据请求一段一段的渲染,同时可以点击…

Spring MVC视图解析器

Spring MVC视图解析器 ➢ AbstractCachingViewResolver:➢ XmlViewResolver:➢ ResourceBundleViewResolver➢ UrlBasedViewResolver:➢ InternalResourceViewResolver:➢ FreeMarkerViewResolver➢ ContentNegotiatingViewResolv…

OffSec Labs Proving grounds Play——FunboxEasyEnum

文章目录 端口扫描目录扫描文件上传漏洞利用查看用户爆破密码sudo提权flag位置FunboxEasyEnum writeup walkthrough Funbox: EasyEnum ~ VulnHub Enumeration Brute-force the web server’s files and directories. Be sure to check for common file extensions. Remote…

OCR的发明人是谁?

OCR的发明背景可以追溯到早期计算机科学和图像处理的研究。随着计算机技术的不断发展,人们开始探索如何将印刷体文字转换为机器可读的文本。 OCR(Optical Character Recognition,光学字符识别)的发明涉及多个人的贡献&#xff0c…

布局性能优化:安卓开发者不可错过的性能优化技巧

作者:麦客奥德彪 当我们开发Android应用时,布局性能优化是一个必不可少的过程。一个高效的布局能够提高用户体验,使应用更加流畅、响应更加迅速,而低效的布局则会导致应用的运行变得缓慢,甚至出现卡顿、崩溃等问题&…

植被利用了多少陆地降水?

降水部分被植被利用,部分转化为河水流量。量化植被直接使用的水量对于解读气候变化的影响至关重要。 新提出的模型的预测与之前的结果进行了比较。资料来源:AGU Advances 水是地球的重要组成部分,因此,了解大尺度的水平衡及其建模…

【Rust】Rust学习 第十章泛型、trait 和生命周期

泛型是具体类型或其他属性的抽象替代。我们可以表达泛型的属性,比如他们的行为或如何与其他泛型相关联,而不需要在编写和编译代码时知道他们在这里实际上代表什么。 之后,我们讨论 trait,这是一个定义泛型行为的方法。trait 可以…

Springboot04--vue前端部分+element-ui

注意点: 这边v-model和value的区别:v-model是双向绑定的,value是单向绑定 li的key的问题 vue的组件化开发: 1. NPM(类似maven,是管理前段代码的工具) 安装完之后可以在cmd里面使用以下指令 2.…

带你认识储存以及数据库新技术演进

01经典案例 1.0 潜在问题 02存储&数据库简介 2.1 存储器层级架构 2.1 数据怎么从应用到存储介质 2.1 RAID技术 2.2 数据库 数据库分为 关系型数据库 和 非关系型数据库 2.2.2 非关系型 2.2.1 关系型 2.3 数据库 vs 经典存储-结构化数据管理 2.3.1 数据库 vs 经典存储-事务能…

c++ static

static 成员 声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用 static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化。 看看下面代码体会一下: //其他类 class …