go语言常量
在Go程序中,常量可以是数值类型(包括整型、浮点数和复数类型)、布尔类型、字符串类型。
定义常量的语法
定义一个常量使用const关键字,语法格式如下:
const constantName.[type] =value
const
: 定义常量关键字
constantName
: 常量名称
type
:常量类型
value
:常量的值
实例
package main
import "fmt"
func main() {
const PI float32 = 3.14
//PI=3.15 常量不能重新赋值
fmt.Printf("PI: %v\n", PI)
const PI2 = 3.1415 //可以省略类型
//批量声明
const (
a = 100
b = 200
)
fmt.Printf("a: %v\n", a)
fmt.Printf("b: %v\n", b)
//多重赋值
const w, h = 200, 300
fmt.Printf("w: %v\n", w)
fmt.Printf("h: %v\n", h)
}
const
同时声明多个常量时,如果省略了值,则表示和上面一行的值相同
package main
import "fmt"
func main() {
const (
a1 = 100
a2
a3
)
fmt.Printf("a1: %v\n", a1) //100
fmt.Printf("a2: %v\n", a2) //100
fmt.Printf("a3: %v\n", a3) //100
}
iota
iota比较特殊,可以被认为是一个可被编译器修改的常量,它默认开始值是0
,每调用一次加1
,遇到const
关键字时被重置为0。
package main
import "fmt"
func main() {
//iota
const (
a1 = iota //0
a2 = iota //i++
a3 = iota
)
fmt.Printf("a1: %v\n", a1) //0
fmt.Printf("a2: %v\n", a2) //1
fmt.Printf("a3: %v\n", a3) //2
}
使用_
跳过某些值
package main
import "fmt"
func main() {
const (
b1 = iota //0
_ //1
b2 = iota //2
)
fmt.Printf("b1: %v\n", b1) //0
fmt.Printf("b2: %v\n", b2) //2
}
iota声明中间插队
package main
import "fmt"
func main() {
const (
a1 = iota
a2 = 100
a3 = iota
)
fmt.Printf("a1: %v\n", a1) //0
fmt.Printf("a2: %v\n", a2) //100
fmt.Printf("a3: %v\n", a3) //2
}