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 := map[key])中的 **''** 会忽略该行的值,但其值也会自增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
相关推荐
双向331 分钟前
Docker 镜像瘦身实战:从 1.2GB 压缩到 200MB 的优化过程
后端
Cyan_RA93 分钟前
计算机网络面试题 — TCP连接如何确保可靠性?
前端·后端·面试
BingoGo4 分钟前
PHP-FPM 深度调优指南 告别 502 错误,让你的 PHP 应用飞起来
后端·php
CoovallyAIHub5 分钟前
微软发布 Visual Studio 2026 Insider:AI深度集成,性能大提升,让开发效率倍增(附下载地址)
后端·编程语言·visual studio
汤姆yu9 分钟前
基于springboot的毕业旅游一站式定制系统
spring boot·后端·旅游
echoarts12 分钟前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
SimonKing13 分钟前
【工具库推荐】Java开发者必备:6款HTTP客户端神器,从经典到未来
java·后端·程序员
Aomnitrix31 分钟前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
用户60830892904743 分钟前
集合处理利器,Java中的Stream流API
java·后端
Doris_202343 分钟前
Python条件判断语句 if、elif 、else
前端·后端·python