Les variables et les types en Go

Apprenez à déclarer et utiliser les variables en Go avec var, l’opérateur court :=, l’inférence de type et les valeurs zéro, exemples à l’appui.

Prérequis

Objectifs pédagogiques

  • Déclarer une variable avec var et avec l’opérateur court :=
  • Comprendre l’inférence de type et savoir quand écrire le type
  • Reconnaître la valeur zéro des principaux types intégrés

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.

TypeValeur zéro
int, float640
string"" (chaîne vide)
boolfalse
pointeurs, slices, mapsnil
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, seul var est 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 var pour 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.

Votre progression est enregistrée uniquement dans ce navigateur. Aucun compte n’est requis.

Recherche

La recherche s’exécute entièrement dans votre navigateur.