在 Go 语言中,const 关键字用于声明常量。常量在程序运行时不会改变,可以用于定义不变的值,如数学常数、固定的配置信息等。常量的类型可以是布尔型、数字型(整数型、浮点型和复数型)和字符串型。
const
常量的声明使用 const 关键字,语法如下:
const name = value
package main import "fmt" func main() { const pi = 3.14159 const name = "Go Language" fmt.Println("Pi:", pi) fmt.Println("Language:", name) }
常量可以显式地指定类型,也可以隐式地根据值推断类型。
package main import "fmt" func main() { const pi float64 = 3.14159 const truth bool = true const greeting string = "Hello, Go!" fmt.Println("Pi:", pi) fmt.Println("Truth:", truth) fmt.Println("Greeting:", greeting) }
package main import "fmt" func main() { const pi = 3.14159 const truth = true const greeting = "Hello, Go!" fmt.Println("Pi:", pi) fmt.Println("Truth:", truth) fmt.Println("Greeting:", greeting) }
可以在一个 const 语句中声明多个常量。
package main import "fmt" func main() { const ( pi = 3.14159 e = 2.71828 greeting = "Hello, Go!" ) fmt.Println("Pi:", pi) fmt.Println("E:", e) fmt.Println("Greeting:", greeting) }
使用 iota 标识符可以生成一系列相关的常量,常用于枚举类型。
iota
package main import "fmt" func main() { const ( Sunday = iota // 0 Monday // 1 Tuesday // 2 Wednesday // 3 Thursday // 4 Friday // 5 Saturday // 6 ) fmt.Println("Sunday:", Sunday) fmt.Println("Monday:", Monday) fmt.Println("Tuesday:", Tuesday) fmt.Println("Wednesday:", Wednesday) fmt.Println("Thursday:", Thursday) fmt.Println("Friday:", Friday) fmt.Println("Saturday:", Saturday) }
iota 的值在每个 const 声明块中从 0 开始,每增加一行,值增加 1。可以使用 iota 创建复杂的常量表达式。
package main import "fmt" func main() { const ( a = iota + 1 // 1 b // 2 c // 3 ) const ( x = 1 << iota // 1 << 0 = 1 y // 1 << 1 = 2 z // 1 << 2 = 4 ) fmt.Println("a:", a) fmt.Println("b:", b) fmt.Println("c:", c) fmt.Println("x:", x) fmt.Println("y:", y) fmt.Println("z:", z) }
var
package main import "fmt" func main() { const pi = 3.14159 var radius = 5.0 area := pi * radius * radius fmt.Println("Area of the circle:", area) // 尝试修改常量会导致编译错误 // pi = 3.14 // 编译错误:cannot assign to pi }
Go 语言的 const 关键字用于声明常量,常量的值在程序编译时确定,且不可改变。通过使用常量,可以提高代码的可读性和维护性。iota 标识符常用于生成枚举类型,方便创建一组相关的常量。掌握常量的使用方法,可以编写更加健壮和高效的 Go 程序。
原文链接:codingdict.net