Implémenter une Interface
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 14 sur 68.
Maintenant que tu sais comment définir une interface, apprenons comment les types Go les implémentent réellement. La chose la plus importante à comprendre est que Go utilise une implémentation implicite : aucun mot-clé ni aucune déclaration spéciale n’est nécessaire.
Si un type possède toutes les méthodes requises par une interface, il satisfait automatiquement cette interface. Vous n’avez pas besoin d’indiquer explicitement que votre type implémente l’interface : Go le détermine pour vous.
Voici comment cela fonctionne avec l’interface Shaper de la leçon précédente :
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return 3.14159 * c.Radius * c.Radius
}Comme le type Circle possède une méthode Area() qui renvoie un float64, il implémente automatiquement l’interface Shaper. Il n’est pas nécessaire de déclarer explicitement cette relation : Go la reconnaît en fonction de la correspondance des signatures de méthode.
Cette approche implicite rend les interfaces Go incroyablement flexibles. Tout type existant peut satisfaire une nouvelle interface tant qu’il possède les méthodes requises, même si l’interface a été créée après l’écriture du type.
Défi
FacileDans ce défi, vous allez vous entraîner à implémenter une interface en créant un système simple de véhicules. Vous allez créer une structure Car qui implémente automatiquement une interface Vehicle grâce à l’implémentation implicite de Go.
Vous recevrez deux entrées :
- Une chaîne représentant la marque de la voiture (par exemple,
"Toyota") - Une chaîne représentant la vitesse de la voiture en km/h (par exemple,
"120")
Votre tâche consiste à :
- Définir une interface
Vehicleavec une seule signature de méthode :GetInfo(), qui retourne une chaîne - Définir une structure
Caravec deux champs :Brand(string) etSpeed(int) - Implémenter la méthode
GetInfo()pour la structureCar, afin qu’elle retourne une chaîne au format suivant :"Brand: [brand], Speed: [speed] km/h" - Analyser les entrées pour créer une instance de
Car - Appeler la méthode
GetInfo()et afficher le résultat
N’oubliez pas qu’en Go, la structure Car implémentera automatiquement l’interface Vehicle parce qu’elle possède la méthode GetInfo() requise avec la signature correcte. Il n’est pas nécessaire de déclarer explicitement que Car implémente Vehicle : Go reconnaît implicitement cette relation.
Essayez vous-même
package main
import (
"fmt"
"strconv"
)
// TODO: 1. Définir l'interface Vehicle avec une méthode GetInfo() string
// TODO: 2. Définir la structure Car avec les champs Brand (string) et Speed (int)
// TODO: 3. Implémenter la méthode GetInfo() pour Car
func main() {
// Lire l'entrée
var brand string
var speedStr string
fmt.Scanln(&brand)
fmt.Scanln(&speedStr)
// Convertir la chaîne de vitesse en entier
speed, _ := strconv.Atoi(speedStr)
// TODO: 4. Créer une instance de Car en utilisant brand et speed, puis appeler GetInfo()
result := "" // remplacez cette ligne par votre implémentation
_ = brand
_ = speed
// Afficher le résultat
fmt.Println(result)
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportementsEntraînez-vous par vous-même : Compilateur Go en ligne