Menu
Coddy logo textTech

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 conceptuellement ce que sont les interfaces, 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
}

Notez qu’une interface contient uniquement 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, mais seulement quelles méthodes doivent exister.

Par exemple, voici comment vous définiriez une interface Shaper simple qui exige que tout type l’implémentant possède une méthode Area :

type Shaper interface {
    Area() float64
}

Cette interface établit un contrat : tout type qui souhaite être considéré comme un Shaper doit posséder 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 vérifie uniquement que la méthode existe avec la signature correcte.

challenge icon

Défi

Facile

Dans ce défi, tu vas t’entraîner à définir des interfaces en Go en créant un système simple de lecteur multimédia. Tu vas définir 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 à :

  1. Définir une interface appelée MediaPlayer avec trois signatures de méthodes :
    • Play() qui renvoie une chaîne
    • Pause() qui renvoie une chaîne
    • Stop() qui renvoie une chaîne
  2. En fonction de l’action reçue en entrée, afficher la signature de méthode correspondante de ton interface MediaPlayer au format : "MediaPlayer interface requires: [MethodName]() string"

L’instruction d’affichage est destinée à refléter l’interface que tu as définie ci-dessus. Tu décris la signature de méthode requise par l’interface MediaPlayer pour l’action donnée. Considère cela comme un programme qui inspecte et décrit son propre contrat d’interface.

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 définition d’interfaces avec des signatures de méthodes, en établissant 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: Define your MediaPlayer interface here
    
    // TODO: Écrivez votre code ci-dessous pour gérer l'action et afficher la sortie requise
    
    // Afficher le résultat
    // Remember to print in format: "MediaPlayer interface requires: [MethodName]() string"
}
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 Logique & Flux

Entraînez-vous par vous-même : Compilateur Go en ligne