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
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.
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 :
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 :
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 :
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 _ :
const (
_ = iota // scarta 0
KB // 1
MB // 2
)A ton tour
Déclarez un PI constant avec la valeur 3,14 au niveau du package, puis imprimez-le dans main.
Afficher l'indice
`const PI = 3.14` va au niveau du package, en dehors du principal.
Solution disponible après 3 tentatives
Définissez un bloc const avec les jours de la semaine (lundi, mardi, mercredi) numérotés à partir de 1 en utilisant iota.
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
Qu'imprime ce programme ?
const (
A = iota * 2
B
C
)
fmt.Println(A, B, C)Récapitulatif
constpour 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.iotacommence à 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)).