Loading

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
}
posted @ 2024-02-01 20:43  brynchen  阅读(10)  评论(0编辑  收藏  举报