在看 Go 源码时,既然遇到 iota 看得我一脸懵逼,所以打算全面地好好理解 Go 的 itoa
看的源码是 C:\Go\src\sync\mutex.go
,itoa 相关部分的源码是:
1 | const ( |
将其打印出来的值是:
1 | mutexLocked:1 |
一脸懵逼,那么就从基础开始,从头来过吧~
首先 itoa
是什么?
iota
是 Go语言 的常量计数器,只能在常量的表达式中使用,即只能和 const
搭配使用,
其特性如下:
1、每次 const 出现时,都会让 iota 初始化为 0.
1 | const a = iota // a=0 |
2、自定义类型
自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。
1 | type NewType int |
3、可跳过的值
1 | type AudioOutput int |
左移运算符 <<
, 用来将一个数的各二进制位全部左移若干位,
移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。
4、位掩码表达式
1 | type Allergen int |
5、定义数量级
1 | type ByteSize float64 |
6、定义在一行的情况
1 | const ( |
7、中间插队
1 | const ( |
1 | const ( |
总结:
可以看出 itoa 虽然很方便,但代码不好读,还是老老实实写人类看得懂的代码吧~