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