首頁 > 後端開發 > Golang > 在 Go 中將連續整數賦給常數時如何跳過 Iota 值?

在 Go 中將連續整數賦給常數時如何跳過 Iota 值?

DDD
發布: 2024-11-22 05:54:14
原創
935 人瀏覽過

How Can I Skip Iota Values When Assigning Sequential Integers to Constants in Go?

在Go 中使用Iota 跳過常數值

在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 和後續常數的值。

單組,自動Offset

為了在跳過值時保持單一常數組,請引入一個常數,其中中斷應該發生並從下一行的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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板