Go语言常量

常量,就是在程序编译阶段就确定下来的值,而程序在运行时则无法改变该值。在Go程序中,常量可以是数值类型(包括整形、浮点型和复数类型)、布尔类型、字符串类型等。

定义常量的语法

定义一个常量使用const关键字,语法格式如下:

1
const constantName [type]= value

const:定义常量关键字

constantName:常量名称

type:常量类型

value:常量的值

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
package main
func main(){
const PI float64 = 3.14
const PI2 = 3.1415

const (
width = 100
height = 200
)

const i , j = 1, 2 //多重赋值
const a , b , c =1, 2, "foo"
}

const同时声明多个常量时,如果省略了值则表示和上面一行的值相同

1
2
3
4
5
6
7
8
9
10
11
12
package main
import "fmt"
func main(){
const (
a1=100
a2
a3
)
fmt.Printf("a1: %v\n",a1)
fmt.Printf("a2: %v\n",a2)
fmt.Printf("a3: %v\n",a3)
}

运行结果

1
2
3
a1=100
a2=100
a3=100

iota

iota比较特殊,可以被认为是一个可被编译器修改的常量,它默认开始值是0,每调用一次加1。遇到const关键字时被重置为0

实例

1
2
3
4
5
6
7
8
9
10
11
12
package main
import "fmt"
func main(){
const (
a1=iota
a2=iota
a3=iota
)
fmt.Printf("a1: %v\n",a1)
fmt.Printf("a2: %v\n",a2)
fmt.Printf("a3: %v\n",a3)
}

运行结果

1
2
3
a1=0
a2=1
a3=2

使用_跳过某些值

1
2
3
4
5
6
7
8
9
10
11
package main
import "fmt"
func main(){
const (
a1=iota
_
a2=iota
)
fmt.Printf("a1: %v\n",a1)
fmt.Printf("a2: %v\n",a2)
}

运行结果

1
2
a1=0
a2=2

iota声明中间插队

1
2
3
4
5
6
7
8
9
10
11
12
package main
import "fmt"
func main(){
const (
a1=iota
a2=100
a3=iota
)
fmt.Printf("a1: %v\n",a1)
fmt.Printf("a2: %v\n",a2)
fmt.Printf("a3: %v\n",a3)
}

运行结果

1
2
3
a1=0
a2=100
a3=2