Menu
Coddy logo textTech

Zusammenfassung – Formen und Verhalten

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

challenge icon

Aufgabe

Einfach

In dieser Herausforderung erstellst du ein Kommunikationssystem, das Polymorphismus durch Interfaces demonstriert. Du erstellst ein Speaker-Interface und implementierst es mit verschiedenen Typen, die auf ihre jeweils eigene Weise „sprechen“ können.

Du erhältst drei Eingaben:

  • Eine Zeichenfolge, die die Anzahl der zu erstellenden Sprecher angibt (z. B. "3")
  • Eine Zeichenfolge mit durch Kommas getrennten Sprechertypen (z. B. "person,parrot,person")
  • Eine Zeichenfolge mit durch Kommas getrennten Sprechernamen (z. B. "Alice,Polly,Bob")

Deine Aufgabe ist es:

  1. Ein Speaker-Interface mit einer Methodensignatur zu definieren: Speak(), die eine Zeichenfolge zurückgibt
  2. Eine Person-Struktur mit einem Name-Feld (string) zu definieren
  3. Eine Parrot-Struktur mit einem Name-Feld (string) zu definieren
  4. Die Speak()-Methode für beide Strukturen zu implementieren:
    • Person sollte Folgendes zurückgeben: "Hello, I'm [name]"
    • Parrot sollte Folgendes zurückgeben: "Squawk! [name] says hello!"
  5. Eine Funktion namens makeAllSpeak zu erstellen, die ein Slice von Speaker-Interfaces als Parameter entgegennimmt
  6. Innerhalb von makeAllSpeak das Slice zu durchlaufen und für jeden Sprecher die Speak()-Methode aufzurufen und das Ergebnis auszugeben
  7. Die Eingaben zu verarbeiten, um anhand der angegebenen Typen und Namen die entsprechenden Sprecherinstanzen zu erstellen
  8. Alle Sprecher in einem Slice von Speaker-Interfaces zu speichern
  9. makeAllSpeak mit deinem Sprecher-Slice aufzurufen

Die Sprecher sollten in der Reihenfolge erstellt werden, in der sie in der Eingabe erscheinen. Wenn die Typen beispielsweise "person,parrot,person" und die Namen "Alice,Polly,Bob" lauten, erstelle zuerst eine Person namens Alice, dann einen Parrot namens Polly und anschließend eine Person namens Bob. Diese Herausforderung zeigt, wie verschiedene Typen über ein gemeinsames Interface einheitlich behandelt werden können, und veranschaulicht die Leistungsfähigkeit des Polymorphismus in Go.

Probier es selbst

package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	// Eingabe lesen
	var numSpeakersStr string
	var speakerTypesStr string
	var speakerNamesStr string
	
	fmt.Scanln(&numSpeakersStr)
	fmt.Scanln(&speakerTypesStr)
	fmt.Scanln(&speakerNamesStr)
	
	// Eingabe parsen
	numSpeakers, _ := strconv.Atoi(numSpeakersStr)
	speakerTypes := strings.Split(speakerTypesStr, ",")
	speakerNames := strings.Split(speakerNamesStr, ",")
	
	// TODO: Schreiben Sie Ihren Code unten
	// 1. Definieren Sie das Speaker-Interface
	// 2. Definieren Sie die Strukturen Person und Parrot
	// 3. Implementieren Sie die Speak()-Methoden für beide Strukturen
	// 4. Erstellen Sie die Funktion makeAllSpeak
	// 5. Erstellen Sie Speaker basierend auf der Eingabe und speichern Sie diese in einem Slice
	// 6. Rufen Sie makeAllSpeak mit Ihrem Slice auf
	
}

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Go-Compiler