在本 Golang 教程中,您将学习有关 Go 常量的所有知识。Golang 常量与变量类似,不同之处在于一旦将变量声明为常量,就无法更改其值。在本教程中,您将深入了解 Go 中的常量是什么,用于常量变量声明的不同语法、命名约定、常量类型及其多重声明。
Go 编程语言常量是一个值保持不变的变量。分配的值对于常量变量保持固定或不变,直到 Golang 程序成功执行或用户更改变量的分配值为止。Go 语言是只读的,不能修改。
在 Go 编程语言中,常量变量的声明与其他变量声明一样简单易行,正如我们在之前的教程中讨论过的那样。
const 将 Go 编程语言中的变量声明为常量。const 后跟变量名及其类型,以标识常量变量存储的值的类型。语法 1
Const <variable_name> <type> = <value>
const PLACE string = "Europe"
const street_no int = 3456
该语法声明了一个常量变量,其变量名为 PLACE、street_no,并根据常量变量持有的值类型为其赋值。
package main
import "fmt"
const PLACE string = "Europe"
const street_no int =3456
func main() {
fmt.Println(PLACE)
fmt.Println(street_no)
}
const 使类型为字符串的 Europe 和整数类型为 3456 的数字在 Go 程序执行期间作为常量变量保持不变。输出
Europe 3456
语法 2:
Const <variable_name> = <value>
在此语法中,常量变量的类型在程序执行时推断,无需预定义常量变量所包含变量值的类型。这里 const 关键字将变量声明为常量。此语法是隐式类型。
const PLACE1 = “Germany”
const street1 = 45
package main
import "fmt"
const PLACE1=”Germany” //Type inferred
const street1 = 45 //Type inferred
func main() {
fmt.Println( PLACE1)
fmt.Println(street1)
}
输出
Germany 45
Golang 常量有两种类型
有类型常量是声明时带有特定类型的常量变量。有类型常量也称为**显式类型**。
package main
import ("fmt")
/* const declared outside a function */
const name string = "Typed Constant"
func main() {
fmt.Println( name)
}
输出
Typed Constant
无类型常量是声明时类型未知的常量变量。无类型常量也称为**隐式类型**。
package main
import ("fmt")
/* const declared outside a function */
const z = 100
func main() {
fmt.Println(z)
}
输出
100
**注意:**在无类型常量的情况下,编译器决定常量变量的类型。
package main
import ("fmt")
func main() {
/* const declared inside function */
const value =10
const z = 3.14
const u = "Hi!"
fmt.Println(value)
fmt.Println(z)
fmt.Println(u)
}
多个常量被分组到一个块中。使用以下语法定义多个常量变量
语法
Const (
A = “ one“
B = 90
C = 78.90
D = false
)
**const** 关键字后跟括号“()”,括号内定义了被认为是常量的多个变量
const (
PRODUCT = "Dress "
QUANTITY = 2
PRICE = 1550.50
STOCK = true
)
package main
import "fmt"
const (
PRODUCT = "Dress "
QUANTITY = 2
PRICE = 1550.50
STOCK = true
)
func main() {
fmt.Println(QUANTITY)
fmt.Println(PRICE)
fmt.Println(PRODUCT)
fmt.Println(STOCK)
}
输出
2 1550.5 Dress true
不能,重新声明常量变量会导致编译错误。
让我们通过一个例子来理解
package main
import ("fmt")
func main() {
const value =10
const z = 3.14 // z declared as constant
const u = "Hi!"
var z = 3 // z redeclared as variable
fmt.Println(value)
fmt.Println(z)
fmt.Println(u)
fmt.Println(z)
}
输出
#_/home/y4zQxY ./prog.go:8:9 z reclared in this book previous declaration at ./prog.go:6:15
**注意:**常量变量不能重新声明,否则会导致编译错误