Menu
Coddy logo textTech

Valeurs zéro et valeurs par défaut

Fait partie de la section Programmation Orientée Objet du Journey GO de Coddy. Leçon 17 sur 107.

En Go, chaque variable possède une valeur zéro : la valeur par défaut attribuée lorsque vous déclarez une variable sans initialisation explicite. Comprendre les valeurs zéro est essentiel pour travailler avec les structures, car les champs non initialisés reçoivent automatiquement ces valeurs par défaut.

Chaque type possède sa propre valeur zéro :

TypeValeur zéro
int, float640
string"" (chaîne string vide)
boolfalse
pointer, slice, mapnil

Lorsque tu crées une structure, tout champ que tu ne définis pas explicitement reçoit sa valeur zéro.

type User struct {
    Name   string
    Age    int
    Active bool
}

func main() {
    var u User
    fmt.Println(u.Name)   // "" (chaîne vide)
    fmt.Println(u.Age)    // 0
    fmt.Println(u.Active) // false
}

Cela s’applique également à l’initialisation partielle. Seuls les champs que vous spécifiez reçoivent des valeurs personnalisées.

u := User{Name: "Alice"}
fmt.Println(u.Age)    // 0
fmt.Println(u.Active) // false

Les valeurs zéro rendent les structs immédiatement utilisables sans initialisation explicite. Cependant, sois prudent avec les types de référence comme les slices et les maps. Leur valeur zéro est nil, ce qui peut provoquer des paniques à l’exécution si tu essaies de les utiliser sans initialisation.

challenge icon

Défi

Facile

Construisons un système de profil de joueur qui montre comment fonctionnent les valeurs zéro en Go. Tu vas créer un profil de jeu dans lequel certains champs sont définis explicitement, tandis que d’autres utilisent leurs valeurs zéro par défaut.

Tu organiseras ton code sur deux fichiers :

  • player.go : définis une structure Player avec les champs suivants : Username (string), Level (int), Score (int), IsPremium (bool) et GuildName (string). Crée également une méthode DisplayProfile qui renvoie une chaîne formatée affichant toutes les informations du joueur.
  • main.go : lis un nom d’utilisateur saisi et crée un Player en utilisant une initialisation partielle : définis uniquement le champ Username. Affiche ensuite le profil complet pour voir comment Go attribue leurs valeurs zéro aux champs non définis.

L’entrée suivante sera fournie :

  • Ligne 1 : le nom d’utilisateur du joueur

Ta méthode DisplayProfile doit renvoyer une chaîne dans ce format exact :

Username: [Username]
Level: [Level]
Score: [Score]
Premium: [IsPremium]
Guild: [GuildName]

Par exemple, si le nom d’utilisateur est ShadowKnight, ta sortie doit afficher le nom d’utilisateur ainsi que toutes les valeurs zéro des champs non initialisés :

Username: ShadowKnight
Level: 0
Score: 0
Premium: false
Guild: 

Remarque que le champ Guild n’affiche rien après les deux-points : il s’agit de la valeur zéro de la chaîne vide. Ce défi t’aide à voir exactement ce que Go attribue à chaque type lorsque tu ne fournis pas de valeur explicite.

Essayez vous-même

package main

import (
	"fmt"
)

func main() {
	// Lire le nom d'utilisateur depuis l'entrée
	var username string
	fmt.Scanln(&username)

	// TODO: Créer un Player en utilisant l'initialisation partielle
	// Définir uniquement le champ Username, laisser les autres champs utiliser les valeurs zéro

	// TODO: Afficher le profil du joueur en utilisant la méthode DisplayProfile
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur Go en ligne