Go語言常量

常量是一個簡單值的標識符,在程序運行時,永遠是隻讀的,不能修改。函數

使用 const 關鍵字定義常量。常量中的數據類型只能夠是布爾型、數字型(整數型、浮點型和複數)和字符串型。spa

常量定義

第一種,顯式類型定義code

const name string = "oldboy"

第二種,隱式類型定義,一個未指定類型的常量由上下文來決定其類型blog

const age = 18

第三種,一次性定義多個常量字符串

const Mon, Tues, Wed, Thur, Fri, Sat, Sun = 1, 2, 3, 4, 5, 6, 7

const (
    name = "oldboy"
    age  = 18
)

第四種,常量能夠用len(),cap(),unsafe.Sizeof()函數計算表達式的值。常量表達式中,函數必須是內置函數,不然編譯不過:編譯器

const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(b)
)
//
unsafe.Sizeof 計算結構體大小
 

常量技巧

未使用的局部常量不會引起編譯錯誤。實例以下:string

package main

func main() {
    const str = "The old boy welcomes you."
}

在常量組中,如不提供類型和初始化值,那麼視做與上一個常量相同。實例以下:io

package main

import (
    "fmt"
)

func main() {
    const (
        name = "oldboy"
        nickname
    )
    fmt.Printf("name : %s, nickname : %s\n", name, nickname)
}

運行結果:編譯

name : oldboy, nickname : oldboy

特殊常量

特殊常量,iota,能夠認爲是一個能夠被編譯器修改的常量。
在每個const關鍵字出現時,被重置爲0,而後再下一個const出現以前,每出現一次iota,其所表明的數字會自動增長1。class

關鍵字 iota 定義常量組中從 0 開始按行計數的自增枚舉值。實例以下:

package main

import (
    "fmt"
)

const (
    Sunday = iota
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
)

func main() {
    fmt.Println(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
}

運行結果:

0 1 2 3 4 5 6

在同一常量組中,能夠提供多個 iota,它們各自增加。實例以下:

package main

import (
    "fmt"
)

const (
    A1, B1 = iota, iota << 10
    A2, B2
)

func main() {
    fmt.Println(A1, B1, A2, B2)
}

運行結果:

0 0 1 1024

若是 iota 自增被打斷,須顯式恢復。實例以下:

package main

import (
    "fmt"
)

const (
    Sun = iota
    Mon
    Tues
    Wed = "Wednesday"
    Thur
    Fri = iota
    Sat
)

func main() {
    fmt.Println(Sun, Mon, Tues, Wed, Thur, Fri, Sat)
}

運行結果:

0 1 2 Wednesday Wednesday 5 6
相關文章
相關標籤/搜索