Golang 中的常量用于存储不会改变的数据,Go 语言常量的定义使用 const 关键字。Go 语言常量是在编译时被创建,即使被定义为 函数 局部的也如此。
Go 语言常量只能是 布尔型、数字型(整数型、浮点型和复数)和 字符串型。由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式。
常量在定义时,必须赋初值,因为 Golang 的常量不可被修改,因此,如果不赋初值,那么常量永远没有值。
const identifier [type] = value
参数 | 描述 |
---|---|
const | 定义常量,所使用的关键字。 |
identifier | 常量名。 |
type | 常量的数据类型。 |
value | 常量的值。 |
使用 const 关键字定义常量。type 可以省略,使用编译器的自动类型推导。且常量在定义时,必须赋初值。
const(
e = 2.7182818
pi = 3.1415926
)
Golang 的常量定义和变量定义一样,可以支持一次定义多个。
const(
a = 1
b
c = 2
d
e
)
批量声明的常量,除了第一个外其它的常量右边的初始化表达式都可以省略。如果省略初始化表达式则表示使用前面常量的初始化表达式写法,对应的常量类型也一样的。
所以,上面的常量,其中 a 和 b 的值都为 1,c 、d 和 e 的值都为 2。
Go 语言常量的值必须是能够在编译时就能够确定的。Go 语言常量可以在其赋值表达式中涉及计算过程,但是所有用于计算的值必须在编译期间就能获得。
const c1 = 2/3 //正确,在编译时可以确定 c1 的值
const c2 = getNum() //错误,c2 的值需要在运行时才能确定
使用 const 关键字定义常量
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello 嗨客网(www.haicoder.net)")
//Golang 使用 const 定义常量
const e = 2.7182818
const pi = 3.1415926
fmt.Println("e = ", e, "pi = ", pi)
}
程序运行,结果如下:
首先,我们使用 const 定义了一个 float64 类型的常量 e,并赋值为 2.7182818。接着,我们再次使用 const 定义了一个 float64 类型的常量 pi,并赋值为 3.1415926。
使用 const 关键字批量定义常量
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello 嗨客网(www.haicoder.net)")
//Golang 使用 const 批量定义常量
const(
e = 2.7182818
pi = 3.1415926
)
fmt.Println("e = ", e, "pi = ", pi)
}
程序运行,结果如下:
我们使用 const 一次定义了两个常量。
使用 const 关键字批量定义常量,忽略值
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello 嗨客网(www.haicoder.net)")
//Golang 使用 const 批量定义常量,忽略值
const(
a = 1
b
c = 2
d
e
)
fmt.Println("a = ", a, "b = ", b, "c =", c, "d =", d, "e =", e)
}
程序运行,结果如下:
我们使用 const 一次定义了五个常量,并且只给常量 a 和常量 c 赋值。所以常量 b 的值和常量 a 的值保持一致,常量 d 和常量 e 的值和常量 c 的值保持一致。
Golang 中的常量用于存储不会改变的数据,Go 语言常量的定义使用 const 关键字。Go 语言常量的值必须是能够在编译时就能够确定的。
Golang 常量定义和变量定义一样,可以支持一次定义多个。