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)
}
相关推荐
data analyse 4564 分钟前
服务端访问日志聚合 PV 与 UV 怎么实现?日志采集与口径设计
大数据·前端·数据分析
song5015 分钟前
React Native for OpenHarmony 实战:三方库 react-native-ratings 的鸿蒙化适配指南
javascript·react native·react.js·分类·harmonyos
JavaGuide9 分钟前
DeepSeek Harness 重磅更新,Codex、Claude Code 子智能体进官方插件列表了,还有 Git 工作树和思考翻译!
前端·后端
wewowilling17 分钟前
AI大模型开发--01Python基础(无废话)
开发语言·python·函数
小羊没烦恼!25 分钟前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
朱包林26 分钟前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
棉猴27 分钟前
玩游戏学Python5-函数
开发语言·python·函数·玩游戏·游戏编程
谢亮_vipxieliang1 小时前
JavaScript this 指向完全指南:调用位置决定一切
开发语言·javascript·ecmascript
denlaku1 小时前
JDK 13 新特性详解
java·开发语言
Eiceblue1 小时前
使用 Python 实现 Excel 行列转置(保留单元格样式)
前端·python·excel