Ein Interface definieren
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 13 von 68.
Da du nun konzeptionell verstanden hast, was Schnittstellen sind, lernen wir jetzt, wie man tatsächlich eine in Go definiert. Eine Schnittstelle wird mithilfe des Schlüsselworts interface definiert, gefolgt von einer Reihe von Methodensignaturen, die in geschweifte Klammern eingeschlossen sind.
Hier ist die grundlegende Syntax zum Definieren eines Interfaces:
type InterfaceName interface {
MethodName() ReturnType
AnotherMethod(parameter Type) ReturnType
}Beachte, dass ein Interface nur Methodensignaturen enthält – den Methodennamen, die Parameter und die Rückgabetypen –, aber keine Implementierung. Das Interface legt nicht fest, wie diese Methoden funktionieren sollen, sondern nur, welche Methoden vorhanden sein müssen.
Zum Beispiel würdest du eine einfache Shaper-Schnittstelle so definieren, dass jeder implementierende Typ über eine Area-Methode verfügen muss:
type Shaper interface {
Area() float64
}Diese Schnittstelle legt einen Vertrag fest: Jeder Typ, der als Shaper betrachtet werden möchte, muss über eine Area-Methode verfügen, die keine Parameter entgegennimmt und einen float64 zurückgibt. Der Schnittstelle ist es egal, um welchen Typ es sich handelt oder wie er die Fläche berechnet – sie berücksichtigt nur, dass die Methode mit der richtigen Signatur vorhanden ist.
Aufgabe
EinfachIn dieser Herausforderung übst du das Definieren von Interfaces in Go, indem du ein einfaches Mediaplayer-System erstellst. Du definierst ein Interface, das einen Vertrag für verschiedene Arten von Mediengeräten festlegt.
Du erhältst eine Eingabe:
- Eine Zeichenkette, die eine Medienaktion darstellt (z. B.
"play","pause"oder"stop")
Deine Aufgabe ist es:
- Ein Interface namens
MediaPlayermit drei Methodensignaturen zu definieren:Play(), das eine Zeichenkette zurückgibtPause(), das eine Zeichenkette zurückgibtStop(), das eine Zeichenkette zurückgibt
- Abhängig von der Eingabeaktion die entsprechende Methodensignatur aus deinem
MediaPlayer-Interface im folgenden Format auszugeben:"MediaPlayer interface requires: [MethodName]() string"
Die Ausgabeanweisung soll das oben von dir definierte Interface widerspiegeln. Du beschreibst, welche Methodensignatur das MediaPlayer-Interface für die angegebene Aktion erfordert. Stell dir vor, dass dein Programm seinen eigenen Interface-Vertrag untersucht und darüber berichtet.
Die Methodennamen müssen großgeschrieben (exportiert) werden, da sie Teil einer Interface-Definition sind. Gib für die Eingabe "play" "MediaPlayer interface requires: Play() string" aus, für "pause" "MediaPlayer interface requires: Pause() string" und für "stop" "MediaPlayer interface requires: Stop() string".
Diese Herausforderung konzentriert sich auf das grundlegende Konzept der Definition von Interfaces mit Methodensignaturen und legt den Vertrag fest, den jeder implementierende Typ erfüllen muss.
Probier es selbst
package main
import "fmt"
func main() {
// Eingabe lesen
var action string
fmt.Scanln(&action)
// TODO: Define your MediaPlayer interface here
// TODO: Schreibe deinen Code darunter, um die Aktion zu verarbeiten und die erforderliche Ausgabe zu drucken
// Das Ergebnis ausgeben
// Remember to print in format: "MediaPlayer interface requires: [MethodName]() string"
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittener Kontrollfluss
Switch mit `fallthrough`Abbrechen von verschachtelten SchleifenFortsetzen einer bestimmten SchleifeDie `goto`-AnweisungZusammenfassung – Fortgeschrittene Schleifensteuerung4Projekt: Einfache Aufgabenliste
Projekt-SetupEine Aufgabe hinzufügen2Structs und Methoden
Methoden für Structs definierenValue ReceiverPointer ReceiverReceiver auswählenMethoden vs. FunktionenZusammenfassung – Struct-Verhalten5Maps im Detail
Maps von StructsPointer als Map-WertePrüfen auf Nil-MapsMaps vergleichenZusammenfassung – Wortfrequenz-Zähler8Projekt: Einfache Bestandsverwaltung
ProjektübersichtLagerbestand prüfen11Abschlussherausforderungen
Einfache KontaktlisteEinfacher Zahlen-ValidatorSammler für eindeutige Elemente3Interfaces (Die Grundlagen)
Was ist ein Interface?Ein Interface definierenEin Interface implementierenInterface-Typen verwendenLeeres InterfaceType AssertionsType SwitchZusammenfassung – Formen und VerhaltenÜbe selbstständig: Online-Go-Compiler