golang之常量与枚举

本文介绍了Go语言中常量的特殊性,它在定义时不需要指定类型,并展示了如何通过iota创建自增常量。示例代码演示了如何在常量组中使用iota,并解释了其在Go源码中的应用,如在位运算中的用法。通过实例,阐述了iota如何影响常量值并展示其在实际代码中的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

golang的常量是一种非常特殊的类型,与其他语言区别挺大,在定义的时候不需要指定类型,如下:
在使用时,num可以赋值给float等类型

const (
	s = "abc"
	num = 2
)
func main() {
	var a float = num
	fmt.Println(a)
	fmt.Printf("%T,%T",s,num)
}

在常量之后加入iota,成为自增常量,iota是一个与常量位置相等的值,并且是可以参与运算的,例子

const (
	s = 2
	p
	num = iota
	_
	g
	m
)
func main() {
	fmt.Println(s,p)
	fmt.Println(num,g,m)
}

输出:

2 2
2 4 5

看下在go源码中的应用

const (
	mutexLocked = 1 << iota // mutex is locked
	mutexWoken
	mutexStarving
	mutexWaiterShift = iota
)

结果:

1
2
4
3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值