一、常量的定義與賦值
Golang中使用const關鍵字來定義常量,常量聲明語法格式為
const (
identifier [type] = value
identifier [type] = value
...)
其中type是可選的,當常量翻譯成其他類型時才需要顯示聲明類型
例如:
const s string = "hello world"
const n = 100
const pi float32 = 3.14
也可以使用const()來定義常量組
例如:
const (
s string = "hello world"
n = 100
pi float32 = 3.14
)
常量還可以用作枚舉,例如定義每個星期的天數
const (
Sunday = 0
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
)
二、常量表達式
常量表達式是在編譯時求值的表達式,可以用於任何需要常量的地方,如數組長度、切片容量等
例如:
const a = 10
const b = 20
const c = a + b //常量表達式,c的值為30
const d = len("hello world") //常量表達式,d的值為11
需要注意的是,常量表達式不允許使用變量和函數調用等
例如:
const a = 10
var b = 20
const c = a + b //錯誤,常量表達式不能使用變量
三、常量的枚舉值
Golang中的枚舉值是常量,常量組也可以表示枚舉值。例如定義一個星期幾的枚舉值:
type Weekday int
const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
在上面的代碼中,通過使用iota關鍵字來自動生成枚舉值,第一個枚舉值默認為0,後面的枚舉值默認加1。也可以顯式的指定枚舉值
type Weekday int
const (
Sunday Weekday = 0
Monday Weekday = 1
Tuesday Weekday = 2
Wednesday Weekday = 3
Thursday Weekday = 4
Friday Weekday = 5
Saturday Weekday = 6
)
四、常量與類型轉換
常量的類型可以通過顯式的類型轉換來進行修改,例如將整型的常量轉換為浮點型
const a = 100
const b = float64(a) //將a轉換為float64
需要注意,常量的類型轉換隻有在編譯時才有效,因此需要保證常量轉換後的類型能夠進行合法的操作
五、常量不可修改
常量一旦賦值不可修改,進行修改會引發編譯錯誤,例如:
const a = 10
a = 20 //錯誤
這與變量有很大區別,變量是可以修改的
六、常量的作用域
常量的作用域與變量相同,作用域只在當前塊內有效
例如:
const a = 10 //全局常量
func test() {
const a = 20 //局部常量
fmt.Println(a) //輸出20
}
func main() {
fmt.Println(a) //輸出10
test()
}
原創文章,作者:EPODM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/333054.html