Menu
CoddyTech

Structures imbriquées

Fait partie de la section Fondamentaux du Journey GO de Coddy. Leçon 99 sur 109.

Go vous permet d’intégrer une struct dans une autre, créant ainsi des relations de composition. C’est l’approche de Go en matière d’héritage.

Définissez deux structures, dont l’une est intégrée dans l’autre :

type Address struct {
    city  string
    state string
}

type Person struct {
    name string
    age  int
    Address  // structure intégrée (sans nom de champ)
}

func main() {
    person := Person{
        name: "Alice",
        age: 30,
        Address: Address{city: "Portland", state: "Oregon"},
    }
    
    // Accéder directement aux champs
    fmt.Println(person.city)  // Accéder au champ intégré
}

La sortie montre que nous pouvons accéder directement aux champs de la structure intégrée :

Portland
challenge icon

Défi

Débutant

Dans ce défi, tu vas t’exercer à utiliser des structs intégrées (composition) en Go.

Nous avons deux structs : Address et Person. La struct Person doit intégrer la struct Address afin qu’une personne puisse accéder directement aux champs de l’adresse.

Ta tâche consiste à compléter la définition de la struct Person pour y intégrer la struct Address. Les instructions d’affichage dans main lisent déjà directement les champs de l’adresse depuis la personne (person.Street, person.City, person.ZipCode) ; elles compilent une fois que Address est intégrée.

Essayez vous-même

package main

import "fmt"

// La structure Address contient des informations de localisation
type Address struct {
	Street  string
	City    string
	ZipCode string
}

// La structure Person doit intégrer la structure Address
type Person struct {
	Name string
	Age  int
	// TODO: Intégrer la structure Address ici (une seule ligne)
}

func main() {
	// Créer une nouvelle personne avec ses informations d’adresse
	person := Person{
		Name: "Alice",
		Age:  30,
		Address: Address{
			Street:  "123 Main St",
			City:    "Wonderland",
			ZipCode: "12345",
		},
	}

	// Afficher les informations de la personne, y compris son adresse
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
	
	// Afficher les champs de l’adresse directement depuis l’instance de Person
	fmt.Println("Street:", person.Street)
	fmt.Println("City:", person.City)
	fmt.Println("ZipCode:", person.ZipCode)
}
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 Fondamentaux

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