目录
前言
在 Go 语言中,常量是固定不变的值,一旦被赋值,就不能再被修改。常量可以是数值、布尔值、字符串等类型。常量的使用可以提高代码的可读性和可维护性,并且常量在编译时就已经确定,因此可以优化程序性能。
1.常量的声明
使用 const 关键字进行常量的声明,有两种方式:
- 显式类型定义:
const a string = "abc"
- 隐式类型定义:
const a = "abc"
多个相同类型的声明可以简写为
const 常量1,常量2 = value1,value2
// 或者下面这种方式
const (
常量1 = 表达式1
常量2 = 表达式2
... ...
)
示例代码:
package main
import "fmt"
func main() {
// 常量表达式
const (
a = 10
b = a + 20
)
fmt.Println("b:", b) // 输出 30
// 常量的类型推导
const c = 3.14
fmt.Printf("Type of c: %T\n", c) // 输出 float64
// 常量的显式类型声明
const d int = 42
fmt.Printf("Type of d: %T\n", d) // 输出 int
}
另外,当常量都为同一个值时,可以用如下方式进行简写:
package main
import "fmt"
const (
a = 1
b
c
d
)
func main() {
fmt.Println(a)
// b、c、d没有初始化,使用上一行(即a)的值
fmt.Println(b) // 输出1
fmt.Println(c) // 输出1
fmt.Println(d) // 输出1
}
2. iota
iota是一个特殊常量,可以认为是一个可以被编译器修改的常量。iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次。
const (
a = iota
b = iota
c = iota
)
// 第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1
// 所以 a=0, b=1, c=2 可以简写为如下形式:
const (
a = iota
b
c
)
示例代码:
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "abc" //独立值,iota += 1
e //"abc" iota += 1
f = 520 //iota +=1
g //520 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}