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 erstellen Sie ein Kommunikationssystem, das Polymorphismus durch Interfaces demonstriert. Sie werden ein Speaker-Interface erstellen und es mit verschiedenen Typen implementieren, die auf ihre eigene, einzigartige Weise „sprechen“ können.

Sie erhalten drei Eingaben:

  • Einen String, der die Anzahl der zu erstellenden Sprecher darstellt (z. B. "3")
  • Einen String, der die Sprechertypen enthält, getrennt durch Kommas (z. B. "person,parrot,person")
  • Einen String, der die Namen der Sprecher enthält, getrennt durch Kommas (z. B. "Alice,Polly,Bob")

Ihre Aufgabe ist es:

  1. Definieren Sie ein Speaker-Interface mit einer Methodensignatur: Speak(), die einen String zurückgibt
  2. Definieren Sie ein Person-Struct mit einem Name-Feld (String)
  3. Definieren Sie ein Parrot-Struct mit einem Name-Feld (String)
  4. Implementieren Sie die Speak()-Methode für beide Structs:
    • Person sollte zurückgeben: "Hello, I'm [name]"
    • Parrot sollte zurückgeben: "Squawk! [name] says hello!"
  5. Erstellen Sie eine Funktion namens makeAllSpeak, die einen Slice von Speaker-Interfaces als Parameter entgegennimmt
  6. Iterieren Sie innerhalb von makeAllSpeak durch den Slice und rufen Sie die Speak()-Methode für jeden Sprecher auf, wobei das Ergebnis ausgegeben wird
  7. Parsen Sie die Eingaben, um die entsprechenden Sprecherinstanzen basierend auf den angegebenen Typen und Namen zu erstellen
  8. Speichern Sie alle Sprecher in einem Slice von Speaker-Interfaces
  9. Rufen Sie makeAllSpeak mit Ihrem Slice von Sprechern auf

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" sind, erstellen Sie eine Person namens Alice, dann einen Papagei namens Polly und dann eine Person namens Bob. Diese Herausforderung zeigt, wie verschiedene Typen durch ein gemeinsames Interface einheitlich behandelt werden können, was die Leistungsfähigkeit des Polymorphismus in Go verdeutlicht.

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