Notes et transcriptions du cours “Démarrer avec Go” proposée par University of California, Irvine disponible sur la plateforme coursera.
Nous avons abordé les variables et nous allons parler de la façon de les initialiser mais quelques mots à propos des types.
Chaque variable doit donc avoir un type mais vous pouvez définir un alias, un autre nom pour un type existant. Cela est donc parfois utile pour clarifier une application particulière du type.
Par exemple, disons que vous avez une d'application qui fonctionne sur les températures. Vous manipulez ces températures sous la forme de décimaux ( virgule flottante de 64 bits).
Vous pouvez donc définir un nouveau type, un alias :
type Celsius float64
Dans ce cas, Celsius
est exactement le même que le float64
. Vous pouvez toujours déclarer que vos variables sont float64, mais Celsius
peut avoir du sens dans le contexte de votre application : le code est ainsi plus clair pour vous en tant que programmeur.
Autre exexemple :
type IDnum int
Si je crée du code qui implémente une base de données d'utilisateurs et que chaque utilisateur possède un numéro d'identification. On a en tête le concept d'UID, d'identifiant utilisateur unique. Je sais que c'est un entier, mais je veux le nommer plus clairement. Je veux lui donner le nom IDNum
, afin de savoir que chaque variable déclarée IDNum
est un identifiant utilisateur. Je donne un sens au code en me basant uniquement sur le nom du type.
vous pouvez désormais déclarer des variables en utilisant vos alias. Je peux donc écrire :
var temp Celsius
La variable temp
va avoir le type float64
car Celsius
est un alias defloat64
. De la même manière
var pid idNum
La variable pid
est en fait un entier. Mais nous l'appelons IDnum
et cela clarifie son usage dans notre code.
Chaque variable doit être initialisée d'une manière ou d'une autre avant de l'utiliser.
Une façon de l'initialiser est dans la déclaration elle-même. Vous pouvez donc écrire :
var x int = 100
On déclare ici une variable nommée x
de type entier, et on définit aussi sa valeur comme égal à 100.
Vous pouvez simplement écrire
var x = 100
Ci-dessus vous ne dites pas explicitement que x
est un entier. Mais compilateur déduira le type grâce au type de la valeur à droite de l'affectation. Le nombre 100 est un entier, donc x
doit être un entier, il fera de x
un entier.
Retenez cependant que parfois ça peut poser problème car le compilateur peut déduire quelque chose que vous ne vouliez pas.
Si par exemple on écrit :
x = 100
J'affecte ici la valeur 100 parce que c'est ma température initiale, mais en fait je veux que ce soit géré par nombre à virgule flottante car plus tard je pourrais avoir des valeurs de température avec décimales. Si je ne le précise pas, comme 100 est un entier, il en déduira que x est de type entier. Si par la suite j'essaie d'affecter la valeur “100,1” à x
, j'aurai un problème.
Il est donc préférable de spécifier le type, mais vous n'êtes pas obligé de le faire.
L' initialisation peut être faite après la déclaration. Vous pouvez donc simplement écrire :
# declaration var x int
Puis vous pouvez écrire plus loin dans le code :
# initialisation / affectation x = 100
C'est une autre façon de faire.
Si vous n'initialisez pas explicitement une variable, elle obtiendra toujours une valeur. Elle obtiendra la valeur zéro correspondant à son type.
Si on reprend
var x int
La valeur 0 pour son type entier est 0, x
ce verra automatiquement assigné la valeur 0.
Si on écrit :
var x string
La valeur zéro d'une chaîne est une chaîne vide. Dans ce cas, x
serait initialisé avec une chaîne vide.
Une autre méthode d'initialisation des variables consiste à utiliser une déclaration de variable courte.
Dans ce cas, vous effectuez la déclaration et l'initialisation ensemble à l'aide de l'opérateur :=
.
x : = 100
Dans ce cas, x
n'a pas encore été déclaré. Cette instruction déclare donc réellement x
et l'initialise. La spécificité de l'opérateur :=
c'est qu'il déduit le type à partir de l'opérande de droite. Donc 100 dans ce cas, le compilateur définira x
comme 100de type entier.
Notez que ce type de déclaration courte (déclaration et l'affectation en une seule ligne avec cet opérateur spécial) ne peut se faire que dans une fonction. Vous ne pouvez donc pas faire une déclaration courte en dehors d'une fonction, cela provoquera une erreur de compilation.