Menu
CoddyTech

Ein Interface definieren

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 13 von 68.

Nachdem du nun konzeptionell verstanden hast, was Interfaces sind, lernen wir, wie man eines in Go tatsächlich definiert. Ein Interface wird mit dem Schlüsselwort interface definiert, gefolgt von einer Reihe von Methodensignaturen in geschweiften Klammern.

Hier ist die grundlegende Syntax zum Definieren eines Interfaces:

type InterfaceName interface {
    MethodName() ReturnType
    AnotherMethod(parameter Type) ReturnType
}

Beachte, dass eine Schnittstelle nur Methodensignaturen enthält – den Methodennamen, die Parameter und die Rückgabetypen –, aber keine Implementierung. Die Schnittstelle legt nicht fest, wie diese Methoden funktionieren sollen, sondern nur, welche Methoden vorhanden sein müssen.

Zum Beispiel würdest du ein einfaches Shaper-Interface 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 gelten soll, muss über eine Area-Methode verfügen, die keine Parameter entgegennimmt und einen float64 zurückgibt. Der Schnittstelle ist egal, um welchen Typ es sich handelt oder wie er die Fläche berechnet – wichtig ist nur, dass die Methode mit der richtigen Signatur vorhanden ist.

challenge icon

Aufgabe

Einfach

In dieser Herausforderung übst du, Schnittstellen in Go zu definieren, indem du ein einfaches Mediaplayer-System erstellst. Du definierst eine Schnittstelle, die einen Vertrag für verschiedene Arten von Mediengeräten festlegt.

Du erhältst eine Eingabe:

  • Eine Zeichenfolge, die eine Medienaktion darstellt (z. B. "play", "pause" oder "stop")

Deine Aufgabe ist es:

  1. Eine Schnittstelle namens MediaPlayer mit drei Methodensignaturen zu definieren:
    • Play(), die eine Zeichenfolge zurückgibt
    • Pause(), die eine Zeichenfolge zurückgibt
    • Stop(), die eine Zeichenfolge zurückgibt
  2. Abhängig von der Eingabeaktion die entsprechende Methodensignatur aus deiner MediaPlayer-Schnittstelle im Format "MediaPlayer interface requires: [MethodName]() string" auszugeben

Dieses Programm verwendet MediaPlayer noch nicht, und das ist in Ordnung: Go kompiliert eine Schnittstelle auch dann, wenn kein Typ sie implementiert. Die Ausgaben geben einfach die Methodensignatur an, die deine Schnittstelle für die jeweilige Aktion verlangt. In der nächsten Lektion erstellst du einen Typ, der MediaPlayer implementiert, und rufst seine Methoden auf.

Die Methodennamen müssen großgeschrieben (exportiert) sein, da sie Teil einer Schnittstellendefinition 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".

Bei dieser Herausforderung geht es um das grundlegende Konzept, Schnittstellen mit Methodensignaturen zu definieren und damit den Vertrag festzulegen, den jeder implementierende Typ erfüllen muss.

Probier es selbst

package main

import "fmt"

func main() {
    // Eingabe einlesen
    var action string
    fmt.Scanln(&action)
    
    // TODO: Definiere hier dein MediaPlayer-Interface
    
    // TODO: Schreibe unten deinen Code, um die action zu verarbeiten und die erforderliche Ausgabe auszugeben
    
    // Ergebnis ausgeben
    // Denke daran, die Ausgabe in diesem Format auszugeben: "MediaPlayer interface requires: [MethodName]() string"
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Go-Compiler