const
const
关键字来创建常量,常量具有只读属性,不允许被修改使用const创建常量
使用
const
关键字来创建常量:package main import "fmt" func main() { // 常量(只读属性) const length int =19 fmt.Println("length = ", length) }
运行结果:
成功创建一个常量
另外常量不可以被修改:
package main
import "fmt"
func main() {
// 常量(只读属性)
const length int =19
fmt.Println("length = ", length)
length = 100
}
- 第10行尝试修改常量length
运行结果:
可以看到常量不允许被修改
const创建枚举类型
const可以创建枚举类型:
// const定义枚举类型
const (
SHANGHAI = 0
BEIJING = 1
SHENGZHEN = 2
)
iota关键字
iota是golang语言的常量计数器,只能在常量的表达式中使用
iota基础用法
在上面const创建枚举类型的案例中可以发现每一个地名需要对应指定一个值,并且依次加1,这种过程可以使用iota来简化书写。
上面的枚举类型可以使用iota来简化代码:
package main
import "fmt"
// const定义枚举类型
const (
SHANGHAI = iota // iota = 0
BEIJING // iota = 1
SHENGZHEN // iota = 2
)
func main() {
fmt.Println("SHANGHAI = ",SHANGHAI)
fmt.Println("BEIJING = ",BEIJING)
fmt.Println("SHENGZHEN = ",SHENGZHEN)
}
- 第7行:iota在const关键字出现时将被重置为0
iota参与运算
iota
还可以参与数学运算,例如:
package main
import "fmt"
// const定义枚举类型
const (
SHANGHAI = iota*2 // iota = 0
BEIJING // iota = 1
SHENGZHEN // iota = 2
)
func main() {
fmt.Println("SHANGHAI = ",SHANGHAI)
fmt.Println("BEIJING = ",BEIJING)
fmt.Println("SHENGZHEN = ",SHENGZHEN)
}
- 第7行
iota*2
,下依次都参加运算
运行结果:
iota进阶使用
iota同行定义多个常量使用:
package main
import "fmt"
// iota单行多定义常量
const (
a, b = iota+1, iota+2 // iota = 0, a = iota+1, b = iota+2, a = 1,b = 2
c, d // iota = 1, c = iota+1, d = iota+2, c = 3,d = 4
e, f // iota = 2, e = iota+1, f = iota+2, e = 5,f = 6
g, h = iota * 2,iota * 3 // iota = 3, g = iota*2, h = iota*3, g = 6,h = 9
i, j // iota = 4, i = iota*2, j = iota*3, i = 8,j = 12
)
func main() {
fmt.Println("a = ", a, "b = ", b)
fmt.Println("c = ", c, "d = ", d)
fmt.Println("e = ", e, "f = ", f)
fmt.Println("g = ", g, "h = ", h)
fmt.Println("i = ", i, "j = ", j)
}
- 7-9行,每行定义两个常量,依次加1
- 11-12行,每行的常量使用乘法运算
运行结果:
iota使用注意点
- iota只能配合const()一起使用,iota只有在const进行累加效果
此处评论已关闭