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)
}
相关推荐
小小小小宇1 小时前
前端监测界面内存泄漏
前端
掘金安东尼1 小时前
⏰前端周刊第 448 期(2026年1月4日-1月10日)
前端·面试·github
攀登的牵牛花1 小时前
前端向架构突围系列 - 工程化(一):JavaScript 演进史与最佳实践
前端·javascript
夏天想1 小时前
为什么使用window.print打印的页面只有第一页。其他页面没有了。并且我希望打印的是一个弹窗的内容,竟然把弹窗的样式边框和打印的按钮都打印进去了
前端·javascript·html
FinClip1 小时前
凡泰极客FinClip荣获2025中国企业IT大奖!AI+超级APP重塑企业AI服务
前端·架构·openai
小酒星小杜2 小时前
在AI时代下,技术人应该学会构建自己的反Demo地狱系统
前端·vue.js·ai编程
willingli2 小时前
c语言经典100题 61-70题
c语言·开发语言·算法
我是小疯子662 小时前
深入解析C++右值引用与移动语义
java·开发语言·算法
Ethan Wilson2 小时前
VS2019 C++20 模块相关 C1001: 内部编译器错误
开发语言·c++·c++20