4.const和iota

1.const语法,隐式重复前一个表达式

go中常量在const语法块中实现,const语法提供了一种"隐式重复前一个表达式"的机制,以下面的代码为例,在const语法块中定义了a,b,c,d四个常量。其中a ,b 定义是1,2;c,d并没有初始化,这里根据"隐式重复前一个表达式"机制,c,d 会重复前面的表达式,所以c,d也会定义为1,2

Go 复制代码
package main

import "fmt"

// 1.const语法 隐式重复前一个表达式
const (
	a, b = 1, 2
	c, d // 等价 c,d = 1,2
)

func main() {
	fmt.Printf("a = %v, b = %v\n", a, b)
	fmt.Printf("c = %v, d = %v\n", c, d)
}

2.iota

在const语法的基础上,go为我们提供了iota关键字,iota关键字的作用是在const块中,iota从定义的那一行为0,随后每新增一行,iota累加1,下面的代码中,结合了const中隐式重复前一个表达式和iota自动按行累加2个机制,需要注意的是当H1 = iota显式的写了iota时,iota并没有特殊的从0开始,依然延续前面的iota的逐行累加值。

Go 复制代码
package main

import "fmt"

// 1.const语法 隐式重复前一个表达式
const (
	a, b = 1, 2
	c, d // 等价 c,d = 1,2
)

const (
	// iota = 0 => 0, 10
	Apple, Banana = iota, iota + 10
	// iota = 1 Strawberry, Grape = iota, iota+10 => 1. 11
	Strawberry, Grape
	// iota = 2 Pear, Watermelon = iota, iota + 10 => 2, 12
	Pear, Watermelon

	H1 = iota // iota = 3
	H2        // iota iota = 4
)

func main() {
	fmt.Printf("Apple = %v, Banana = %v\n", Apple, Banana)
	fmt.Printf("Strawberry = %v, Grape = %v\n", Strawberry, Grape)
	fmt.Printf("Pear = %v, Watermelon = %v\n", Pear, Watermelon)
	fmt.Printf("H1 = %v, H2 = %v \n", H1, H2)

	fmt.Printf("a = %v, b = %v\n", a, b)
	fmt.Printf("c = %v, d = %v\n", c, d)
}
相关推荐
南极星10057 分钟前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言
未来之窗软件服务9 分钟前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君
baidu_2474386110 分钟前
Android ViewModel定时任务
android·开发语言·javascript
嘿起屁儿整23 分钟前
面试点(网络层面)
前端·网络
Dev7z23 分钟前
基于 MATLAB 的铣削切削力建模与仿真
开发语言·matlab
不能隔夜的咖喱29 分钟前
牛客网刷题(2)
java·开发语言·算法
VT.馒头29 分钟前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
小天源36 分钟前
Error 1053 Error 1067 服务“启动后立即停止” Java / Python 程序无法后台运行 windows nssm注册器下载与报错处理
开发语言·windows·python·nssm·error 1053·error 1067
有位神秘人1 小时前
Android中Notification的使用详解
android·java·javascript
肉包_5111 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++