Golang常量iota

Go语言iota的用法

iota 用于初始常量赋值,在赋值时每行的iota变量自动增加1。需要注意的是还存在某些特殊的规则。
案例1

go 复制代码
package main
import "fmt"
const (
	A = iota
	B 
	C
	D
	E
)
func main() {
	fmt.Printf("A: %d, B: %d, C: %d, D: %d, E: %d", A, B, C, D, E)
}

//输入:
//输出:A: 0, B: 1, C: 2, D: 3, E: 4

规则1

iota有cha插行时该行也要计数,如下例所示。
案例2

go 复制代码
package main

import "fmt"

const (
	A = iota
	B = 10
	C = iota
	D
	F
	G
)

func main() {
	fmt.Printf("A: %d, B: %d, C: %d, D: %d, F: %d, G: %d", A, B, C, D, F, G)
}

//输入:
//输出:: A: 0, B: 10, C: 2, D: 3, F: 4, G: 5

规则2

'_' 的使用类似于(,v := mapkey)中的 **''** 会忽略该行的值,但其值也会自增1
案例3

go 复制代码
package main

import "fmt"

const (
   A = iota
   B
   _
   C
   D
)

func main() {
   fmt.Printf("A: %d, B: %d, C: %d, D: %d", A, B, C, D)
}

//输入:
//输出:A: 0, B: 1, C: 3, D: 4

规则3

iota只会对上一行的数加一(无论上一行有几个值)

go 复制代码
package main

import "fmt"

const (
	A    = iota
	B, C = iota, iota
	D    = iota
	F
)

func main() {
	fmt.Printf("A: %d, B: %d, C: %d, D: %d, F: %d", A, B, C, D, F)
}

//输入:
//输出:A: 0, B: 1, C: 1, D: 2, F: 3

规则4

iota 在该行没有表达式时会沿用该行的表达式。
案例4

go 复制代码
package main

import "fmt"

const (
	A = iota
	B
	C = 12
	D
	F
)

func main() {
	fmt.Printf("A: %d, B: %d, C: %d, D: %d, F: %d", A, B, C, D, F)
}

//输入:
//输出:A: 0, B: 1, C: 12, D: 12, F: 12
相关推荐
川冰ICE2 分钟前
JavaScript高级④|类(class)与面向对象,ES6现代写法
开发语言·javascript·es6
小番茄夫斯基9 分钟前
全球大模型的价格和能力排行汇总
前端·后端·架构
Sirius Wu10 分钟前
Agent模型冷启动问题
开发语言·javascript·人工智能·机器学习·ecmascript·aigc
用户2986985301415 分钟前
Java 实现 Word 文档内容复制:段落、章节与全文合并技巧
java·后端
吴阿福|一人公司30 分钟前
类变量和实例变量的命名规范有哪些避坑点?
开发语言·python
Aaswk31 分钟前
Java项目:文件批量处理工具
java·开发语言·vscode·idea
ZengLiangYi33 分钟前
从 RAG 到知识图谱:个人知识管理的演进
数据库·后端·程序员
小江的记录本35 分钟前
【Spring全家桶】Spring AI核心原理、大模型集成、Prompt工程、RAG实现、AI Agent开发(附《思维导图》+《面试高频考点清单》)
java·人工智能·spring boot·后端·spring·面试·prompt
晚风吹红霞44 分钟前
深入浅出 STL 之 map 与 set:从入门到实战
开发语言·c++
手握风云-1 小时前
Spring AI:让大模型住进 Spring 生态(五)
java·后端·spring