Définir une Interface
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 13 sur 68.
Maintenant que tu comprends ce que sont les interfaces sur le plan conceptuel, apprenons à en définir une concrètement en Go. Une interface se définit à l’aide du mot-clé interface, suivi d’un ensemble de signatures de méthodes entre accolades.
Voici la syntaxe de base pour définir une interface :
type InterfaceName interface {
MethodName() ReturnType
AnotherMethod(parameter Type) ReturnType
}Remarque qu’une interface ne contient que des signatures de méthodes — le nom de la méthode, les paramètres et les types de retour — mais aucune implémentation. L’interface ne précise pas comment ces méthodes doivent fonctionner, seulement quelles méthodes doivent exister.
Par exemple, voici comment définir une interface Shaper simple qui exige que tout type qui l'implémente possède une méthode Area :
type Shaper interface {
Area() float64
}Cette interface établit un contrat : tout type qui veut être considéré comme un Shaper doit avoir une méthode Area qui ne prend aucun paramètre et renvoie un float64. L’interface ne se soucie pas du type ni de la manière dont il calcule l’aire : elle exige seulement que la méthode existe avec la bonne signature.
Défi
FacileDans ce défi, tu vas t’exercer à définir des interfaces en Go en créant un système de lecteur multimédia simple. Tu définiras une interface qui établit un contrat pour différents types d’appareils multimédias.
Tu recevras une entrée :
- Une chaîne représentant une action multimédia (par exemple,
"play","pause"ou"stop")
Ta tâche consiste à :
- Définir une interface appelée
MediaPlayeravec trois signatures de méthode :Play()qui renvoie une chaînePause()qui renvoie une chaîneStop()qui renvoie une chaîne
- En fonction de l’action saisie, afficher la signature de méthode correspondante de ton interface
MediaPlayerau format :"MediaPlayer interface requires: [MethodName]() string"
Ce programme n’utilise pas encore MediaPlayer, et c’est tout à fait normal : Go compile une interface même lorsqu’aucun type ne l’implémente. Les instructions d’affichage indiquent simplement la signature de méthode requise par ton interface pour l’action donnée. Dans la prochaine leçon, tu créeras un type qui implémente MediaPlayer et tu appelleras ses méthodes.
Les noms des méthodes doivent commencer par une majuscule (être exportés), car ils font partie d’une définition d’interface. Pour l’entrée "play", affiche "MediaPlayer interface requires: Play() string" ; pour "pause", affiche "MediaPlayer interface requires: Pause() string" ; et pour "stop", affiche "MediaPlayer interface requires: Stop() string".
Ce défi porte sur le concept fondamental de la définition d’interfaces avec des signatures de méthode, qui établissent le contrat que tout type implémentant l’interface doit respecter.
Essayez vous-même
package main
import "fmt"
func main() {
// Lire l'entrée
var action string
fmt.Scanln(&action)
// TODO: Définir votre interface MediaPlayer ici
// TODO: Écrire votre code ci-dessous pour traiter l'action et afficher la sortie requise
// Afficher le résultat
// N'oubliez pas d'afficher au format : "MediaPlayer interface requires: [MethodName]() string"
}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