Une variable en Go stocke une valeur typée. Vous la déclarez soit avec le
mot-clé var, soit, à l’intérieur d’une fonction, avec l’opérateur court :=.
Go est typé statiquement : chaque variable possède un type fixé à la
compilation, mais vous écrivez rarement ce type vous-même grâce à l’inférence.
Déclarer une variable avec var
Le mot-clé var fonctionne partout : au niveau du package comme dans une
fonction. Vous pouvez indiquer le type, la valeur, ou les deux.
var name string = "Ada"
var count int = 3
var ready bool // sans valeur : ready vaut false
Lorsque vous fournissez une valeur initiale, vous pouvez omettre le type et laisser le compilateur l’inférer :
var name = "Ada" // inféré en string
var pi = 3.14 // inféré en float64
L’opérateur de déclaration courte :=
À l’intérieur d’une fonction, := déclare et initialise une variable en une
seule étape. C’est la forme la plus courante en Go idiomatique.
package main
import "fmt"
func main() {
name := "Ada"
year := 1815
fmt.Printf("%s est née en %d\n", name, year)
}
Les valeurs zéro
Si vous déclarez une variable sans valeur, Go l’initialise à la valeur zéro de son type. Il n’existe pas de variable non initialisée en Go.
| Type | Valeur zéro |
|---|---|
int, float64 | 0 |
string | "" (chaîne vide) |
bool | false |
| pointeurs, slices, maps | nil |
var total int // 0
var label string // ""
var enabled bool // false
Un exemple complet
Le programme ci-dessous déclare des variables de plusieurs façons et les affiche. Il compile et s’exécute tel quel.
package main
import "fmt"
func main() {
// Type explicite.
var language string = "Go"
// Type inféré.
version := 1.24
// Valeur zéro.
var stars int
stars = 42
fmt.Printf("%s %.2f a %d étoiles\n", language, version, stars)
}
Son exécution affiche :
Go 1.24 a 42 étoiles
Erreurs fréquentes
- Déclarer une variable jamais utilisée. Go refuse de compiler un programme
contenant une variable locale inutilisée. Supprimez-la ou utilisez
_pour ignorer une valeur. - Utiliser
:=au niveau du package. En dehors d’une fonction, seulvarest autorisé. - Redéclarer avec
:=. Au moins une variable à gauche de:=doit être nouvelle ; sinon, utilisez=pour une simple affectation.
À vous de jouer
Déclarez une variable celsius valant 100, calculez fahrenheit avec la
formule celsius*9/5 + 32, puis affichez 100°C = 212°F.
Afficher la correction
package main
import "fmt"
func main() {
celsius := 100
fahrenheit := celsius*9/5 + 32
fmt.Printf("%d°C = %d°F\n", celsius, fahrenheit)
}Comme celsius est un int, tout le calcul se fait en arithmétique entière,
ce qui est exactement ce que l’on veut ici : le résultat vaut 212.
Résumé
- Utilisez
varpour déclarer une variable partout ; utilisez:=dans une fonction. - L’inférence de type permet d’omettre le type quand vous fournissez une valeur.
- Chaque variable possède une valeur zéro : rien n’est jamais laissé non initialisé.
Ensuite, apprenez à prendre des décisions avec les conditions en Go, puis à regrouper votre logique dans des fonctions.