在Go 中,iota 是一個特殊常數,用於將連續整數分配給內部的枚舉常數一個常數數組。然而,有時需要跳過將 iota 值分配給某些常數。這裡有三種方法:
如果常數在同一組內,您可以用常量手動移動iota,留下您想要那些跳過的常數的空初始化表達式:
const ( APPLE = iota ORANGE PEAR BANANA = iota + 96 // 96 is added manually to get 99 GRAPE ) fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)
此方法將產生所需的輸出:0, 1, 2, 99, 100。但是,改變順序或在 BANANA 之前插入新常數會影響 BANANA 及後續常數的值。
為了避免意外的值變化,請打破常量組並開始新的一:
const ( APPLE = iota ORANGE PEAR ) const ( BANANA = iota + 99 // Iota resets to 0 GRAPE ) fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)
這也會產生相同的輸出,並且在BANANA 之前插入新常數不會影響BANANA 和後續常數的值。
為了在跳過值時保持單一常數組,請引入一個常數,其中中斷應該發生並從下一行的iota中減去它的值:
const ( APPLE = iota ORANGE PEAR _BREAK BANANA = iota - _BREAK + 98 // Continues from 98 + 1 = 99 GRAPE ) fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)
這種方法確保在BANANA 之前更改順序或插入新常數不會影響BANANA和後續常量的值。為了簡化偏移計算,_BREAK 可以用 iota 1 初始化,因此應用於下一個常數的偏移量就是 _BREAK 本身的值:
const ( APPLE = iota ORANGE PEAR _BREAK = iota + 1 BANANA = iota - _BREAK + 99 // Continues from 99 GRAPE )
以上是在 Go 中將連續整數賦給常數時如何跳過 Iota 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!