Back

[Go 教學] 2. 常數和 iota

const 在 Go 中是常數的意思,無法被修改,在編譯時期值就定義完成。

常數宣告 Constants Declaration

const 跟 var 的寫法類似:

1
2
3
const PI float64 = 3.14
const MaxMonth int = 12
const Greeting string = "Hello"

省略型別:

1
2
3
const PI = 3.14
const MaxMonth = 12
const Greeting = "Hello"

群組宣告:

1
2
3
4
5
const (
    PI = 3.14
    MaxMonth = 12
    Greeting = "Hello"
)

Go 的常數只可以宣告基本型別,也就是 bool, int, float32 和 string 等, 而 slice, map, pointer, struct 等都是不行的。 另外,const 不能使用 := 進行宣告。

iota

宣告常數時可以搭配 iota 使用,iota 表示在同一個 const group 內的行索引數,(也就是小括號內的第幾行),每遇到新的 const 字詞,itoa 就會歸零。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
type Month int

const (
    January Month = 1 + iota  // 1
    February                  // 2
    March                     // 3
    April                     // 4
    May                       // 5
    June                      // 6
    July                      // 7
    August                    // 8
    September                 // 9
    October                   // 10
    November                  // 11
    December                  // 12
)

type Weekday int

const (
    Sunday Weekday = iota  // 0
    Monday                 // 1
    Tuesday                // 2
    Wednesday              // 3
    Thursday               // 4
    Friday                 // 5
    Saturday               // 6
)

const a, b, c = iota, iota, iota  // 0, 0, 0

const d = iota // 0
const e = iota // 0
const f = iota // 0

進階用法,搭配 shift 運算:

1
2
3
4
5
6
const (
    _  = iota             // 0
    KB = 1 << (10 * iota) // 2 ^ 10
    MB                    // 2 ^ 20
    GB                    // 2 ^ 30
)
Built with Hugo
Theme Stack designed by Jimmy
© Licensed Under CC BY-NC-SA 4.0