Menu
CoddyTech

Structs imbriqués

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

Une structure imbriquée est une structure qui contient une autre structure nommée comme l’un de ses champs. Cela vous permet de modéliser des données complexes et hiérarchiques en combinant des types plus petits et réutilisables.

type Address struct {
    Street string
    City   string
    ZIP    string
}

type Person struct {
    Name    string
    Age     int
    Address Address  // structure imbriquée
}

Pour accéder aux champs d’une structure imbriquée, enchaîne les noms des champs en les séparant par des points.

p := Person{
    Name: "Alice",
    Age:  30,
    Address: Address{
        Street: "123 Main St",
        City:   "Boston",
        ZIP:    "02101",
    },
}

fmt.Println(p.Address.City) // Boston

L’imbrication favorise la réutilisation du code. Le type Address peut être utilisé dans plusieurs structures comme Person, Company ou Order, sans dupliquer les champs. Cette approche reflète les relations du monde réel, où des entités contiennent d’autres entités.

type Company struct {
    Name      string
    Employees int
    Address   Address  // même type Address réutilisé
}

Tu peux imbriquer des structures sur plusieurs niveaux, mais garder les hiérarchies peu profondes améliore la lisibilité. Les structures imbriquées sont fondamentales pour créer des modèles de données orientés objet en Go.

challenge icon

Défi

Facile

Construisons un système de gestion des employés qui montre comment les structures imbriquées permettent de modéliser des hiérarchies du monde réel. Tu vas créer une structure dans laquelle les employés appartiennent à des services, et où les services ont des informations sur leur emplacement.

Tu vas organiser ton code dans deux fichiers :

  • models.go : définis trois structures qui fonctionnent ensemble :
    • Location avec les champs Building (string) et Floor (int)
    • Department avec le champ Name (string) et un champ Location imbriqué
    • Employee avec ID (int), Name (string) et un champ Department imbriqué
  • main.go : lis les informations de l’employé depuis l’entrée, crée un employé avec des structures correctement imbriquées et affiche le profil complet de l’employé en accédant aux champs par la structure imbriquée.

Les entrées suivantes seront fournies :

  • Ligne 1 : ID de l’employé (entier)
  • Ligne 2 : nom de l’employé
  • Ligne 3 : nom du service
  • Ligne 4 : nom du bâtiment
  • Ligne 5 : numéro de l’étage (entier)

Format de sortie :

Employee: [Name] (ID: [ID])
Department: [DepartmentName]
Location: [Building], Floor [Floor]

Par exemple, avec 101, Alice, Engineering, Tower et 5, ta sortie devrait être :

Employee: Alice (ID: 101)
Department: Engineering
Location: Tower, Floor 5

Accède aux champs imbriqués en utilisant la notation par points pour parcourir la hiérarchie des structures (par exemple, employee.Department.Location.Building).

Essayez vous-même

package main

import "fmt"

func main() {
	// Lisez les informations de l’employé
	var id int
	var name string
	var deptName string
	var building string
	var floor int

	fmt.Scanln(&id)
	fmt.Scanln(&name)
	fmt.Scanln(&deptName)
	fmt.Scanln(&building)
	fmt.Scanln(&floor)

	// TODO: Créez un Employee avec des structures correctement imbriquées
	// Utilisez les structures Location, Department et Employee définies dans models.go
	// Initialisez tous les champs imbriqués avec les valeurs saisies

	// TODO: Affichez le profil de l’employé au format suivant :
	// Employee: [Name] (ID: [ID])
	// Department: [DepartmentName]
	// Location: [Building], Floor [Floor]
	// Accédez aux champs imbriqués à l’aide de la notation par points (par exemple, employee.Department.Location.Building)
}
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