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)
}
相关推荐
执风挽^18 分钟前
Python基础编程题2
开发语言·python·算法·visual studio code
梦帮科技18 分钟前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
Z9fish27 分钟前
sse哈工大C语言编程练习20
c语言·开发语言·算法
VT.馒头1 小时前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
萧鼎1 小时前
Python 包管理的“超音速”革命:全面上手 uv 工具链
开发语言·python·uv
css趣多多1 小时前
一个UI内置组件el-scrollbar
前端·javascript·vue.js
-凌凌漆-1 小时前
【vue】pinia中的值使用 v-model绑定出现[object Object]
javascript·vue.js·ecmascript
C澒1 小时前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架
Anastasiozzzz1 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
刘琦沛在进步1 小时前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++