常量声明
// 显示类型定义const name string = "zhangsan"// 隐式类型定义, 编译器可以根据变量的值来推断其类型。const name = "zhangsan"// 定义多个同类型常量const a, b, c = 1, 2, 3const (a = 1b = 2c = 3)// 定义多个不同类型常量const (a string = "zhangsan"b int = 1)// 如果类型和值一样,可简写const (a int = 0bcd float32 = 3.14ef)
隐式转换
对于无类型常量参与的表达式求职,Go编译器会根据上下文中的类型信息,把无类型常量自动转换为相应的类型后,再参与求值计算。
如下示例,当指定常量类型后,a + b 会运行报错:invalid operation: a + b (mismatched types int32 and float32)
package mainimport "fmt"const a int32 = 99const b float32 = 0.99func main() {fmt.Println(a + b) // invalid operation: a + b (mismatched types int32 and float32)}
当不指定类型时,a + b 就会得到正确的结果
package mainimport "fmt"const a = 99const b = 0.99func main() {fmt.Println(a + b) // 99.99}
