Go语言的坑: 八进制整数

[toc]

1
sum := 100 + 011  fmt.Println(sum)

运行之后,不会输出 111,而是 108, 因为在 Go 中以 0 开头的整数表示八进制

它经常用在处理 Linux 权限相关的代码上,如下面打开一个文件:

1
file, err := os.OpenFile("foo", os.O_RDONLY, 0644)

所以为了可读性,我们在用八进制的时候最好使用 “0o” 的方式表示,比如上面这段代码可以表示为:

1
file, err := os.OpenFile("foo", os.O_RDONLY, 0o644)