Go 语言定义常量与Javascript类似,将 var关键字替换成 const 即可。
1.const常量
package main
import (
"fmt"
)
func main() {
const pi = 3.141592
const domain = "www.simoniu.com"
const a, b, c = 1, false, "hello" //多重赋值
fmt.Println(pi)
fmt.Println(domain)
println(a, b, c)
}
运行结果:
3.141592
www.simoniu.com
1 false hello
2.定义多个常量
常量还可以用来模拟枚举:
数字 0、1 和 2 分别代表未知性别、女性和男性。
package main
import "fmt"
func main() {
const (
Unknown = 0
Female = 1
Male = 2
)
gender := Male
switch gender {
case 0:
fmt.Println("无名氏")
break
case 1:
fmt.Println("小姑娘")
break
case 2:
fmt.Println("老爷们")
break
default:
fmt.Println("输入错误")
}
}
老爷们
3.iota
Go 语言中其实是没有枚举类型的,但是可以使用常量iota 来模拟枚举。上面的例子可以改写如下:
package main
import "fmt"
// 定义一个名为 Gender 类型, 实际类型为 int
type Gender int
// 定义性别男女
const (
Unknown Gender = iota // 将枚举值 Unknown 定义为 Gender 类型,并搭配 iota 开始生成枚举值,默认从 0 开始
Male
Female
)
func main() {
// 输出枚举值
fmt.Println(Female, Male)
// 使用枚举类型,并赋值
var gender Gender = Male
fmt.Println(gender)
}
运行结果:
2 1
1
但是这输出 2,1 数字表示性别不是很直观,我可以把枚举值替换为字符串。
package main
import "fmt"
// 定义一个名为 Gender 类型, 实际类型为 int
type Gender int
// 定义性别男女
const (
Unknown Gender = iota // 将枚举值 Unknown 定义为 Gender 类型,并搭配 iota 开始生成枚举值,默认从 0 开始
Male
Female
)
// 定义一个 Gender 类型的方法 String(), 返回字符串
func (s Gender) String() string {
switch s {
case Female:
return "女"
case Male:
return "男"
}
return "N/A"
}
func main() {
// 输出枚举值
fmt.Println(Female, Male)
// 使用枚举类型,并赋值
var gender Gender = Male
fmt.Printf("%s,%d\n", gender, gender)
}
运行结果:
女 男
男,1