Go Constantes typées et non typées


Exemple

Les constantes dans Go peuvent être saisies ou non typées. Par exemple, compte tenu du littéral de chaîne suivant:

"bar"

on pourrait dire que le type du littéral est string , cependant, ceci n'est pas sémantiquement correct. Au lieu de cela, les littéraux sont des constantes de chaîne non typées . C'est une chaîne (plus correctement, son type par défaut est string ), mais ce n'est pas une valeur Go et n'a donc pas de type tant qu'elle n'est pas affectée ou utilisée dans un contexte tapé. C'est une distinction subtile, mais utile à comprendre.

De même, si nous affectons le littéral à une constante:

const foo = "bar"

Il reste non typé puisque, par défaut, les constantes ne sont pas typées. Il est possible de le déclarer comme une chaîne typée constante également:

const typedFoo string = "bar"

La différence entre en jeu lorsque nous tentons d’attribuer ces constantes dans un contexte de type. Par exemple, considérez les éléments suivants:

var s string
s = foo      // This works just fine
s = typedFoo // As does this

type MyString string
var mys MyString
mys = foo      // This works just fine
mys = typedFoo // cannot use typedFoo (type string) as type MyString in assignment