Aller aux constantes du langage
Une constante est un identifiant d'une valeur simple qui ne sera pas modifiée pendant l'exécution du programme.
Les types de données dans les constantes ne peuvent être que booléens, numériques (nombres entiers, à virgule flottante et complexes) et chaîne.
Format de définition de constante :
const identifier [type] = value
Vous pouvez omettre le spécificateur de type [type] car le compilateur peut déduire le type de la variable en fonction de sa valeur.
Définition de type explicite :
const b string = "abc"
Définition de type implicite :
const b = "abc"
Plusieurs déclarations du même type peuvent être abrégées en :
const c_name1, c_name2 = value1, value2
L'exemple suivant démontre l'application de constantes :
package main import "fmt" func main() { const LENGTH int = 10 const WIDTH int = 5 var area int const a, b, c = 1, false, "str" //多重赋值 area = LENGTH * WIDTH fmt.Printf("面积为 : %d", area) println() println(a, b, c) }
Le résultat de l'exemple ci-dessus est :
面积为 : 50 1 false str
Les constantes peuvent également être utilisées comme énumérations :
const ( Unknown = 0 Female = 1 Male = 2 )
Les nombres 0, 1 et 2 représentent respectivement un sexe inconnu, féminin et masculin.
Les constantes peuvent être utilisées pour calculer la valeur des expressions en utilisant les constantes len(), cap(), unsafe.Sizeof(). Dans les expressions constantes, la fonction doit être une fonction intégrée, sinon elle ne sera pas compilée :
package main import "unsafe" const ( a = "abc" b = len(a) c = unsafe.Sizeof(a) ) func main(){ println(a, b, c) }
Le résultat de l'exemple ci-dessus est :
abc 3 16
iota
iota, constante spéciale, peut être considérée comme une constante pouvant être modifiée par le compilateur.
Lorsque chaque mot-clé const apparaît, il est réinitialisé à 0, puis avant que le prochain const n'apparaisse, chaque fois que iota apparaît, le nombre qu'il représente augmentera automatiquement de 1.iota peut être utilisé comme valeurs d'énumération :
const ( a = iota b = iota c = iota )
Le premier iota est égal à 0. Chaque fois que iota est utilisé dans une nouvelle ligne, sa valeur sera automatiquement ajoutée 1 ; donc a=0, b=1, c=2 peut être abrégé comme suit :
const ( a = iota b c )
Iota Usage
package main import "fmt" func main() { const ( a = iota //0 b //1 c //2 d = "ha" //独立值,iota += 1 e //"ha" iota += 1 f = 100 //iota +=1 g //100 iota +=1 h = iota //7,恢复计数 i //8 ) fmt.Println(a,b,c,d,e,f,g,h,i) }
Le résultat de l'exemple ci-dessus est :
0 1 2 ha ha 100 100 7 8
Regardons un exemple d'iota intéressant :
package main import "fmt" const ( i=1<<iota j=3<<iota k l ) func main() { fmt.Println("i=",i) fmt.Println("j=",j) fmt.Println("k=",k) fmt.Println("l=",l) }
Le résultat de l'exemple ci-dessus est :
i= 1 j= 6 k= 12 l= 24
iota signifie qu'il augmente automatiquement de 1 à partir de 0, donc i=1<< 0,j= 3<<1 (<< signifie décalage à gauche), c'est-à-dire : i=1, j=6, ce n'est pas un problème, la clé est k et l À partir du résultat de sortie, k=3<. ;<2, l=3<<3.