0Pricing
Go Academy · Leçon

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.Power ou c.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

  1. Intégration de structs
  2. Intégration d’interfaces
  3. Promotion des méthodes
  4. La composition plutôt que l’héritage
← Retour à Go Academy