Maison >développement back-end >Golang >Comment puis-je ignorer les valeurs Iota lors de l'attribution d'entiers séquentiels à des constantes dans Go ?

Comment puis-je ignorer les valeurs Iota lors de l'attribution d'entiers séquentiels à des constantes dans Go ?

DDD
DDDoriginal
2024-11-22 05:54:14936parcourir

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

Saut des valeurs constantes à l'aide d'Iota dans Go

Dans Go, iota est une constante spéciale utilisée pour attribuer des entiers séquentiels aux constantes énumérées dans un groupe constant. Cependant, il arrive parfois qu'il soit nécessaire de ne pas attribuer de valeurs iota à certaines constantes. Voici trois approches :

Groupe unique, décalage manuel

Si les constantes sont dans le même groupe, vous pouvez décaler manuellement l'iota avec une constante, en laissant expressions d'initialisation vides pour les constantes que vous souhaitez ignorer :

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

Cette approche produira le résultat souhaité : 0, 1, 2, 99, 100. Cependant, changer l'ordre ou insérer de nouvelles constantes avant BANANA affectera les valeurs de BANANA et les constantes suivantes.

Rupture du groupe de constantes

Pour éviter des changements de valeur inattendus, rompez le groupe constant et commencez un nouveau one :

const (
    APPLE = iota
    ORANGE
    PEAR
)

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

Cela produira également le même résultat, et l'insertion de nouvelles constantes avant BANANA n'affectera pas les valeurs de BANANA et les constantes suivantes.

Groupe unique, automatique Offset

Pour conserver le groupe de constantes uniques tout en sautant des valeurs, introduisez une constante à l'endroit où la rupture doit se produire et soustrayez sa valeur de iota dans la ligne suivante :

const (
    APPLE = iota
    ORANGE
    PEAR

    _BREAK

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

Cette approche garantit que la modification de l'ordre ou l'insertion de nouvelles constantes avant BANANA n'affectera pas les valeurs de BANANA et les constantes suivantes. Pour simplifier le calcul du décalage, _BREAK peut être initialisé avec iota 1, donc le décalage à appliquer à la constante suivante est la valeur de _BREAK lui-même :

const (
    APPLE = iota
    ORANGE
    PEAR

    _BREAK = iota + 1

    BANANA = iota - _BREAK + 99 // Continues from 99
    GRAPE
)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn