想深入了解Golang中的Const用法
想深入了解Golang中的Const用法 你好,
我想了解为什么下面的代码输出是 7 7 7:
package main
import "fmt"
const (
i = 7
j
k
)
func main() {
fmt.Println(i, j, k)
}
4 回复
更多关于想深入了解Golang中的Const用法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我尝试搜索了相关文档,但未能找到。我确实阅读了关于 iota 的内容,但使用它需要在赋值时包含 iota。如果可能的话,能否请您分享相关文档链接?
RAJ_SINGH:
- package main
- import “fmt”
- const (
- i = 7
- j
- k
- )
- func main() {
- fmt.Println(i, j, k)
- }
因为如果未为常量指定类型/值,它将从前一个常量中获取。
package main
import "fmt"
const (
i = 7
j
k
)
func main() {
fmt.Println(i, j, k)
}
在Go语言中,常量声明时如果省略了初始化表达式,会复用前一个常量的表达式。在你的代码中:
const (
i = 7 // 显式赋值为7
j // 省略初始化,复用i的表达式,值为7
k // 省略初始化,复用j的表达式,值为7
)
这种特性在定义一组相关常量时特别有用,可以减少重复代码。更完整的示例:
const (
a = 1
b // b = 1
c // c = 1
d = iota * 10 // d = 0 * 10 = 0
e // e = 1 * 10 = 10
f // f = 2 * 10 = 20
g = "hello"
h // h = "hello"
)
输出验证:
package main
import "fmt"
const (
i = 7
j
k
)
const (
a = 1
b
c
d = iota * 10
e
f
g = "hello"
h
)
func main() {
fmt.Println(i, j, k) // 输出: 7 7 7
fmt.Println(a, b, c) // 输出: 1 1 1
fmt.Println(d, e, f) // 输出: 0 10 20
fmt.Println(g, h) // 输出: hello hello
}
这种省略初始化的语法只适用于常量组(const block),单个常量声明必须显式初始化。

