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
相关推荐
李慕婉学姐21 小时前
【开题答辩过程】以《基于Spring Boot的疗养院理疗管理系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·spring boot·后端
我的golang之路果然有问题21 小时前
使用 Hugo + GitHub Pages + PaperMod 主题 + Obsidian 搭建开发博客
golang·go·github·博客·个人开发·个人博客·hugo
tb_first21 小时前
SSM速通2
java·javascript·后端
一路向北⁢21 小时前
Spring Boot 3 整合 SSE (Server-Sent Events) 企业级最佳实践(一)
java·spring boot·后端·sse·通信
测试_AI_一辰21 小时前
项目实践笔记13:多用户事实碎片 Agent 的接口测试与约束设计
开发语言·人工智能·ai编程
风象南21 小时前
JFR:Spring Boot 应用的性能诊断利器
java·spring boot·后端
爱吃山竹的大肚肚21 小时前
微服务间通过Feign传输文件,处理MultipartFile类型
java·spring boot·后端·spring cloud·微服务
twj_one21 小时前
java中23种设计模式
java·开发语言·设计模式
梵刹古音21 小时前
【C语言】 跳转语句
c语言·开发语言·算法
阿猿收手吧!1 天前
【C++】C++模板特化:精准定制泛型逻辑
开发语言·c++·算法