Intégration de structs
Composer des structs
Intégration de structs est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Composer des structures
Go ne possède pas d’héritage de classes. À la place, il propose l’intégration : placez une structure dans une autre sans nom de champ afin de réutiliser ses champs et ses méthodes.
Champs anonymes
Un champ intégré est déclaré uniquement par son type, sans nom. Ses membres sont promus dans la structure englobante.
package main
import "fmt"
type Engine struct{ Power int }
type Car struct {
Engine
Brand string
}
func main() {
c := Car{Engine: Engine{Power: 150}, Brand: "Coddy"}
fmt.Println(c.Power, c.Brand)
}Accéder aux champs promus
Vous lisez directement c.Power, même si Power appartient à la structure intégrée Engine. C’est ce qu’on appelle la promotion d’un champ.
Le chemin complet fonctionne toujours
Vous pouvez toujours accéder explicitement à la structure intégrée en utilisant son nom de type.
package main
import "fmt"
type Engine struct{ Power int }
type Car struct{ Engine }
func main() {
c := Car{Engine{200}}
fmt.Println(c.Engine.Power)
fmt.Println(c.Power)
}Intégration ou champ nommé
Un champ nommé (engine Engine) nécessite c.engine.Power. L’intégration (Engine) promeut les membres, ce qui permet d’écrire c.Power. L’intégration exprime une relation « est une sorte de ».
Initialiser des structures intégrées
Utilisez le nom du type comme clé de champ dans un littéral composite.
package main
import "fmt"
type Address struct{ City string }
type User struct {
Address
Name string
}
func main() {
u := User{Address: Address{City: "Istanbul"}, Name: "Mert"}
fmt.Println(u.Name, "in", u.City)
}Intégrations multiples
Une structure peut intégrer plusieurs types et mélanger leurs champs.
package main
import "fmt"
type Timestamps struct{ Created string }
type Author struct{ Name string }
type Post struct {
Timestamps
Author
Title string
}
func main() {
p := Post{Timestamps{"today"}, Author{"Ada"}, "Hello"}
fmt.Println(p.Title, p.Name, p.Created)
}Collisions de noms
Si deux types intégrés partagent le même nom de champ, la référence ambiguë provoque une erreur de compilation — vous devez la qualifier avec le nom du type pour lever l’ambiguïté.
Masquage par la structure englobante
Un champ déclaré dans la structure englobante masque un champ promu de même nom. Le champ englobant est prioritaire lors d’un accès non qualifié.
package main
import "fmt"
type Base struct{ ID int }
type Item struct {
Base
ID int
}
func main() {
i := Item{Base{1}, 99}
fmt.Println(i.ID, i.Base.ID)
}Intégration de pointeur
Vous pouvez intégrer un type pointeur. Les membres sont toujours promus, mais vous devez initialiser le pointeur sous peine de provoquer un déréférencement nul.
package main
import "fmt"
type Logger struct{ Prefix string }
type Service struct{ *Logger }
func main() {
s := Service{Logger: &Logger{Prefix: "[svc]"}}
fmt.Println(s.Prefix)
}Quand intégrer un type
- Réutiliser des champs courants (horodatages, identifiants)
- Construire des types plus riches à partir de types plus petits
- Éviter les imbrications profondes et les chemins d’accès verbeux
Vérification rapide
Vérifiez vos connaissances sur l’intégration de structures.
Récapitulatif
Vous avez découvert l’intégration de structures.
- Les champs anonymes promeuvent les membres dans la structure englobante
- Accédez-y via
c.Powerouc.Engine.Power - Les champs englobants masquent les champs promus
- Les collisions nécessitent une qualification explicite
- L’intégration de pointeurs fonctionne également
Questions Fréquemment Posées
La leçon « Intégration de structs » est-elle gratuite ?
Oui — le texte complet de « Intégration de structs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Intégration de structs » ?
Composer des structs Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Intégration de structs » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Intégration de structs
- Intégration d’interfaces
- Promotion des méthodes
- La composition plutôt que l’héritage