Menu
Coddy logo textTech

Ein Interface implementieren

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

Nachdem du nun weißt, wie man ein Interface definiert, wollen wir lernen, wie Go-Typen es tatsächlich implementieren. Das Wichtigste, was du verstehen musst, ist, dass Go eine implizite Implementierung verwendet – es ist kein spezielles Schlüsselwort und keine Deklaration erforderlich.

Wenn ein Typ über alle Methoden verfügt, die eine Schnittstelle erfordert, erfüllt er automatisch diese Schnittstelle. Du musst nicht ausdrücklich angeben, dass dein Typ die Schnittstelle implementiert – Go erkennt das für dich.

So funktioniert es mit der Shaper-Schnittstelle aus der vorherigen Lektion:

type Circle struct {
    Radius float64
}

func (c Circle) Area() float64 {
    return 3.14159 * c.Radius * c.Radius
}

Da der Typ Circle über eine Area()-Methode verfügt, die einen float64 zurückgibt, implementiert er automatisch das Interface Shaper. Es ist nicht nötig, diese Beziehung ausdrücklich zu deklarieren – Go erkennt sie anhand der Übereinstimmung der Methodensignatur.

Dieser implizite Ansatz macht Go-Schnittstellen unglaublich flexibel. Jeder vorhandene Typ kann eine neue Schnittstelle erfüllen, solange er über die erforderlichen Methoden verfügt, selbst wenn die Schnittstelle erst erstellt wurde, nachdem der Typ geschrieben worden war.

challenge icon

Aufgabe

Einfach

In dieser Herausforderung übst du die Implementierung eines Interfaces, indem du ein einfaches Fahrzeugsystem erstellst. Du erstellst eine Car-Struktur, die durch Gos implizite Implementierung automatisch das Vehicle-Interface implementiert.

Du erhältst zwei Eingaben:

  • Eine Zeichenkette, die die Marke des Fahrzeugs darstellt (z. B. "Toyota")
  • Eine Zeichenkette, die die Geschwindigkeit des Fahrzeugs in km/h darstellt (z. B. "120")

Deine Aufgabe ist es:

  1. Ein Vehicle-Interface mit einer Methodensignatur zu definieren: GetInfo(), die eine Zeichenkette zurückgibt
  2. Eine Car-Struktur mit zwei Feldern zu definieren: Brand (string) und Speed (int)
  3. Die Methode GetInfo() für die Car-Struktur zu implementieren, die eine Zeichenkette im Format "Brand: [brand], Speed: [speed] km/h" zurückgibt
  4. Die Eingaben zu analysieren, um eine Car-Instanz zu erstellen
  5. Die Methode GetInfo() aufzurufen und das Ergebnis auszugeben

Denke daran, dass die Car-Struktur in Go automatisch das Vehicle-Interface implementiert, da sie über die erforderliche GetInfo()-Methode mit der korrekten Signatur verfügt. Es ist nicht nötig, ausdrücklich zu deklarieren, dass Car Vehicle implementiert – Go erkennt diese Beziehung implizit.

Probier es selbst

package main

import (
	"fmt"
	"strconv"
)

// TODO: 1. Definiere das Vehicle-Interface mit einer GetInfo() string-Methode

// TODO: 2. Definiere das Car-Struct mit den Feldern Brand (string) und Speed (int)

// TODO: 3. Implementiere die GetInfo()-Methode für Car

func main() {
	// Eingabe lesen
	var brand string
	var speedStr string
	fmt.Scanln(&brand)
	fmt.Scanln(&speedStr)

	// Geschwindigkeits-String in Ganzzahl umwandeln
	speed, _ := strconv.Atoi(speedStr)

	// TODO: 4. Erstelle eine Car-Instanz unter Verwendung von brand und speed, rufe dann GetInfo() auf
	result := "" // Ersetze diese Zeile durch deine Implementierung
	_ = brand
	_ = speed

	// Ergebnis ausgeben
	fmt.Println(result)
}
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