Wie kann ich Iota-Werte überspringen, wenn ich in Go sequentielle Ganzzahlen Konstanten zuweise?

DDD
Freigeben: 2024-11-22 05:54:14
Original
858 Leute haben es durchsucht

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

Konstante Werte mit Iota in Go überspringen

In Go ist Iota eine spezielle Konstante, die verwendet wird, um aufgezählten Konstanten darin sequentielle Ganzzahlen zuzuweisen eine konstante Gruppe. Es kann jedoch vorkommen, dass die Zuweisung von Iota-Werten zu bestimmten Konstanten übersprungen werden muss. Hier sind drei Ansätze:

Einzelne Gruppe, manueller Offset

Wenn sich die Konstanten innerhalb derselben Gruppe befinden, können Sie das Iota manuell mit einer Konstante verschieben und verlassen Leere Initialisierungsausdrücke für die Konstanten, die Sie überspringen möchten:

const (
    APPLE = iota
    ORANGE
    PEAR
    BANANA = iota + 96 // 96 is added manually to get 99
    GRAPE
)
fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)
Nach dem Login kopieren

Dieser Ansatz erzeugt die gewünschte Ausgabe: 0, 1, 2, 99, 100. Eine Änderung der Reihenfolge oder das Einfügen neuer Konstanten vor BANANA wirkt sich jedoch auf die Werte von BANANA und nachfolgenden Konstanten aus.

Aufbrechen der Konstantengruppe

Um unerwartete Wertänderungen zu vermeiden, brechen Sie die Konstantengruppe auf und beginnen Sie eine neue:

const (
    APPLE = iota
    ORANGE
    PEAR
)

const (
    BANANA = iota + 99 // Iota resets to 0
    GRAPE
)
fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)
Nach dem Login kopieren

Dies erzeugt ebenfalls die gleiche Ausgabe, und das Einfügen neuer Konstanten vor BANANA hat keinen Einfluss auf die Werte von BANANA und nachfolgenden Konstanten.

Einzelne Gruppe, automatischer Offset

An Behalten Sie die einzelne Konstantengruppe bei, während Sie Werte überspringen, führen Sie eine Konstante an der Stelle ein, an der die Unterbrechung erfolgen soll, und subtrahieren Sie im nächsten Schritt ihren Wert von Iota Zeile:

const (
    APPLE = iota
    ORANGE
    PEAR

    _BREAK

    BANANA = iota - _BREAK + 98 // Continues from 98 + 1 = 99
    GRAPE
)
fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass eine Änderung der Reihenfolge oder das Einfügen neuer Konstanten vor BANANA keinen Einfluss auf die Werte von BANANA und nachfolgenden Konstanten hat. Um die Offset-Berechnung zu vereinfachen, kann _BREAK mit Iota 1 initialisiert werden, sodass der Offset, der auf die nächste Konstante angewendet werden soll, der Wert von _BREAK selbst ist:

const (
    APPLE = iota
    ORANGE
    PEAR

    _BREAK = iota + 1

    BANANA = iota - _BREAK + 99 // Continues from 99
    GRAPE
)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Iota-Werte überspringen, wenn ich in Go sequentielle Ganzzahlen Konstanten zuweise?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage