Passer au contenu principal
eLearner.app
Module 1 · Leçon 3 sur 53/50 dans le cours~10 min
Leçons du module (3/5)

Constantes et iota

Les constantes sont des valeurs immuables connues au moment de la compilation. En Go, ils sont déclaré avec const et peut être typed ou untyped. Ceux qui ne sont pas typés ont un superpuissance : ils s'adaptent au type requis par le contexte, vous épargnant de devoir écrire des conversions explicites.

Syntaxe de base

Go
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"

MaxRetry est tapé (int) : vous ne pouvez l'attribuer qu'à un int. PI et Name sont non typés : ils se comportent comme des "littéraux" et s'adaptent à le contexte.

Go
const PI = 3.14

var f float32 = PI  // ok: PI è non tipata, diventa float32
var d float64 = PI  // ok

## blocs const

Vous pouvez regrouper plusieurs constantes dans un bloc :

Go
const (
    StateInitial = "INIT"
    StateReady   = "READY"
    StateError   = "ERROR"
)

iota : le compteur d'énumération

A l'intérieur d'un bloc const, l'identifiant spécial iota commence à 0 et incrémente de 1 sur chaque ligne. C'est l'idiome pour faire des énumérations :

Go
const (
    Monday = iota // 0
    Tuesday       // 1
    Wednesday     // 2
    Thursday      // 3
    Friday        // 4
)

Les lignes suivantes héritent de l'expression si elles n'en fournissent pas. C'est pourquoi il suffit d'écrire Tuesday sans répéter = iota.

Modèles avec expressions

iota peut apparaître dans des expressions arbitraires :

Go
const (
    KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
    MB                          // 1 << 20
    GB                          // 1 << 30
    TB                          // 1 << 40
)

Sauter une valeur

Si vous ne souhaitez pas attribuer de valeur à une ligne (parce que vous souhaitez que iota incrément de toute façon), utilisez l'identifiant vide _ :

Go
const (
    _  = iota // scarta 0
    KB        // 1
    MB        // 2
)

A ton tour

Exercice#go.m1.l3.e1
Tentatives : 0Chargement…

Déclarez un PI constant avec la valeur 3,14 au niveau du package, puis imprimez-le dans main.

Chargement de l'éditeur…
Afficher l'indice

`const PI = 3.14` va au niveau du package, en dehors du principal.

Solution disponible après 3 tentatives

Exercice#go.m1.l3.e2
Tentatives : 0Chargement…

Définissez un bloc const avec les jours de la semaine (lundi, mardi, mercredi) numérotés à partir de 1 en utilisant iota.

Chargement de l'éditeur…
Afficher l'indice

Utilisez `iota + 1` sur la première ligne du bloc ; les lignes suivantes héritent de l'expression.

Solution disponible après 3 tentatives

Quiz#go.m1.l3.e3
Prêt

Qu'imprime ce programme ?

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
Options de réponse

Récapitulatif

  • const pour les valeurs immuables connues au moment de la compilation.
  • Les constantes non typées s'adaptent au contexte : aucune conversion nécessaire.
  • const ( ... ) bloque les valeurs liées au groupe.
  • iota commence à 0 dans chaque bloc et incrémente ligne par ligne.
  • Modèles : énumération (= iota), masque de bits (= 1 << iota), unités (= 1 << (10*iota)).