Menu
Coddy logo textTech

Ein Interface definieren

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

Nachdem Sie nun verstanden haben, was Schnittstellen konzeptionell sind, wollen wir lernen, wie man tatsächlich eine in Go definiert. Eine Schnittstelle wird mit dem Schlüsselwort interface definiert, gefolgt von einer Reihe von Methodensignaturen, die in geschweiften Klammern eingeschlossen sind.

Hier ist die grundlegende Syntax zum Definieren eines Interfaces:

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

Beachten Sie, dass ein Interface nur Methodensignaturen enthält – den Methodennamen, Parameter und Rückgabetypen –, aber keine Implementierung. Das Interface legt nicht fest, wie diese Methoden funktionieren sollen, sondern nur, welche Methoden existieren müssen.

Zum Beispiel sehen Sie hier, wie Sie ein einfaches Shaper-Interface definieren, das von jedem implementierenden Typ eine Area-Methode verlangt:

type Shaper interface {
    Area() float64
}

Diese Schnittstelle legt einen Vertrag fest: Jeder Typ, der als Shaper betrachtet werden möchte, muss eine Area-Methode besitzen, 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 achtet nur darauf, dass die Methode mit der korrekten Signatur existiert.

quiz iconTeste dich selbst

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

quiz iconTeste dich selbst

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

quiz iconTeste dich selbst

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

challenge icon

Aufgabe

Einfach

In dieser Herausforderung üben Sie das Definieren von Interfaces in Go, indem Sie ein einfaches Media-Player-System erstellen. Sie definieren ein Interface, das einen Vertrag für verschiedene Arten von Mediengeräten festlegt.

Sie erhalten eine Eingabe:

  • Einen String, der eine Medienaktion darstellt (z. B. "play", "pause" oder "stop")

Ihre Aufgabe ist es:

  1. Definieren Sie ein Interface namens MediaPlayer mit drei Methodensignaturen:
    • Play(), die einen String zurückgibt
    • Pause(), die einen String zurückgibt
    • Stop(), die einen String zurückgibt
  2. Geben Sie basierend auf der Eingabeaktion die entsprechende Methodensignatur aus Ihrem MediaPlayer-Interface im folgenden Format aus: "MediaPlayer interface requires: [MethodName]() string"

Die Ausgabeanweisung soll das oben definierte Interface widerspiegeln — Sie beschreiben, welche Methodensignatur das MediaPlayer-Interface für die jeweilige Aktion erfordert. Betrachten Sie es so, als ob Ihr Programm seinen eigenen Interface-Vertrag inspiziert und darüber berichtet.

Die Methodennamen sollten großgeschrieben (exportiert) werden, da sie Teil einer Interface-Definition sind. Für die Eingabe "play" geben Sie "MediaPlayer interface requires: Play() string" aus, für "pause" geben Sie "MediaPlayer interface requires: Pause() string" aus und für "stop" geben Sie "MediaPlayer interface requires: Stop() string" aus.

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.

Spickzettel

Eine Schnittstelle wird mit dem Schlüsselwort interface definiert, gefolgt von Methodensignaturen in geschweiften Klammern:

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

Schnittstellen enthalten nur Methodensignaturen (Name, Parameter, Rückgabetypen), aber keine Implementierung:

type Shaper interface {
    Area() float64
}

Jeder Typ, der alle Methoden einer Schnittstelle implementiert, erfüllt automatisch diesen Schnittstellenvertrag.

Probier es selbst

package main

import "fmt"

func main() {
    // Eingabe lesen
    var action string
    fmt.Scanln(&action)
    
    // TODO: Definieren Sie hier Ihr MediaPlayer-Interface
    
    // TODO: Schreiben Sie unten Ihren Code, um die Aktion zu verarbeiten und die erforderliche Ausgabe auszugeben
    
    // Ergebnis ausgeben
    // Denken Sie daran, im 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