1.Go语言常量关键词const
Go语言用关键词const来定义常量类型,与其他语言一样,被const关键词定义的变量只可读不可写。以下是一个例子:
package main
import "fmt"
func main() {
// 声明了一个常量变量fruits
const fruits string = "apple"
fmt.Println("const fruits =", fruits)
}
输出结果:
const fruits = apple
常量是不允许进行修改的,比如我们尝试改变常量fruits的值
package main
import "fmt"
func main() {
const fruits string = "apple"
//尝试给常量fruits赋值
fruits = "orange"
fmt.Println("const fruits =", fruits)
}
输出结果:
cannot assign to fruits (declared const)
Go语言的常量关键词const还有另外一个用法,那就是用来声明枚举类型:
package main
import "fmt"
// 枚举类型
const (
APPLE = 1
BANANA = 2
ORANGE = 3
)
func main() {
fmt.Println("APPLE =", APPLE)
fmt.Println("BANANA =", BANANA)
fmt.Println("ORANGE =", ORANGE)
}
输出结果:
APPLE = 1
BANANA = 2
ORANGE = 3
对于递增的这种枚举情况,其实Go语言有一个特殊的关键词iota,与const配合使用可以有效的实现这类枚举方式。
2.Go语言iota关键词
直接上例子:
package main
import "fmt"
// iota关键词体验
const (
APPLE = iota+1
BANANA
ORANGE
)
func main() {
fmt.Println("APPLE =", APPLE)
fmt.Println("BANANA =", BANANA)
fmt.Println("ORANGE =", ORANGE)
}
输出结果:
APPLE = 1
BANANA = 2
ORANGE = 3
可以发现,得到了一样的结果,这是因为每行的iota都会累加1,即在BANANA这一行的是iota的值为2,并可以做出和第一行一样的运算操作,下面一个例子讲会有更好的体会:
package main
import "fmt"
const (
a, b = iota + 1, iota + 2 // iota = 0
c, d // iota = 1
e, f = iota * 10, iota - 1 // iota = 2
h, i // iota = 3
)
func main() {
fmt.Println("a, b =", a, b)
fmt.Println("c, d =", c, d )
fmt.Println("e, f =", e, f)
fmt.Println("h, i =", h, i)
}
输出结果:
a, b = 1 2
c, d = 2 3
e, f = 20 1
h, i = 30 2
总结:const关键词代表该变量只有只读属性,不可对其进行赋值操作,其可以和iota关键词实现枚举类型的声明。