Menu
Coddy logo textTech

Initialisation de Structs

Fait partie de la section Programmation Orientée Objet du Journey GO de Coddy — leçon 9 sur 107.

Go propose plusieurs façons d'initialiser des structs, chacune étant utile dans différentes situations.

Initialisation de champs nommés

type Person struct {
    Name string
    Age  int
    City string
}

p1 := Person{
    Name: "Alice",
    Age:  25,
    City: "New York",
}

Initialisation positionnelle (l'ordre doit correspondre à la déclaration des champs)

p2 := Person{"Bob", 30, "London"}

Initialisation à la valeur zéro (tous les champs reçoivent des valeurs par défaut)

p3 := Person{}
// Name: "", Age: 0, City: ""

Initialisation partielle (les champs non définis reçoivent des valeurs par défaut)

p4 := Person{Name: "Charlie"}
// Name: "Charlie", Age: 0, City: ""

Pointeur vers une structure utilisant &

p5 := &Person{
    Name: "Diana",
    Age:  28,
    City: "Paris",
}
fmt.Println(p5.Name) // Diana

Utilisation de var puis assignation des champs

var p6 Person
p6.Name = "Eve"
p6.Age = 22

L'initialisation par champs nommés est l'approche la plus courante et la plus lisible. Utilisez & lorsque vous avez besoin d'un pointeur vers la structure.

challenge icon

Défi

Moyen

Créez trois objets Player en utilisant différentes méthodes d'initialisation :

  • player1 : Initialisation par champs nommés en utilisant les valeurs d'entrée
  • player2 : Initialisation par champs nommés avec Name: "Guest", Class: "Novice", HitPoints: 50
  • player3 : Utilisez la déclaration var puis assignez chaque champ individuellement

Aide-mémoire

Go propose plusieurs façons d'initialiser des structures :

Initialisation par champs nommés (la plus courante et la plus lisible) :

p1 := Person{
    Name: "Alice",
    Age:  25,
    City: "New York",
}

Initialisation positionnelle (l'ordre doit correspondre à la déclaration des champs) :

p2 := Person{"Bob", 30, "London"}

Initialisation à la valeur zéro (tous les champs reçoivent des valeurs par défaut) :

p3 := Person{}
// Name: "", Age: 0, City: ""

Initialisation partielle (les champs non définis reçoivent des valeurs zéro) :

p4 := Person{Name: "Charlie"}
// Name: "Charlie", Age: 0, City: ""

Pointeur vers une structure en utilisant & :

p5 := &Person{
    Name: "Diana",
    Age:  28,
}
fmt.Println(p5.Name) // Diana

Utilisation de var puis affectation des champs :

var p6 Person
p6.Name = "Eve"
p6.Age = 22

Essayez vous-même

package main

import "fmt"

func main() {
    var name, class string
    var hp int
    fmt.Scan(&name, &class, &hp)

    // TODO: Créer player1 en utilisant l'initialisation par champs nommés avec les valeurs d'entrée

    // TODO: Créer player2 en utilisant l'initialisation par champs nommés :
    // Name: "Guest", Class: "Novice", HitPoints: 50

    // TODO: Créer player3 en utilisant la déclaration var, puis assigner les champs :
    // Name: "Hero", Class: "Knight", HitPoints: 200

    fmt.Printf("Player 1: %s (%s) - HP: %d\n", player1.Name, player1.Class, player1.HitPoints)
    fmt.Printf("Player 2: %s (%s) - HP: %d\n", player2.Name, player2.Class, player2.HitPoints)
    fmt.Printf("Player 3: %s (%s) - HP: %d\n", player3.Name, player3.Class, player3.HitPoints)
}
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