Go语言精进之路读书笔记第9条——使用无类型常量简化代码
9.1 Go常量溯源
绝大多数情况下,Go常量在声明时并不显式指定类型,也就是说使用的是无类型常量(untyped constant)。
9.2 有类型常量带来的烦恼
如果有类型常量与变量的类型不同,那么混合运算的求值操作会报错:
type myInt int
const n myInt = 13
// const m int = n + 5 //编译器错误提示:cannot use n + 5 (type myInt) as type int in const initializer
const m int = int(n) + 5
9.3 无类型常量消除烦恼,简化代码
- 无类型常量可以直接赋值给自定义类型的变量,无类型常量在参与变量赋值和计算过程时无须显式类型转换
- 无类型常量的默认类型:无类型的布尔型常量、整数常量、字符常量、浮点数常量、复数常量、字符串常量对应的默认类型分别为bool、int、int32(rune)、float64、complex128和string
const (
a = 5
pi = 3.1415926
s = "Hello, Gopher"
c = 'a'
b = false
)
type myInt int
type myFloat float32
type myString string
func main() {
var j myInt = a
var f myFloat = pi
var str myString = s
var e float64 = a + pi
}