Zusammenfassung – Formen und Verhalten
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 19 von 68.
Aufgabe
EinfachIn 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:
- Definieren Sie ein
Speaker-Interface mit einer Methodensignatur:Speak(), die einen String zurückgibt - Definieren Sie ein
Person-Struct mit einemName-Feld (String) - Definieren Sie ein
Parrot-Struct mit einemName-Feld (String) - 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!"
- Person sollte zurückgeben:
- Erstellen Sie eine Funktion namens
makeAllSpeak, die einen Slice vonSpeaker-Interfaces als Parameter entgegennimmt - Iterieren Sie innerhalb von
makeAllSpeakdurch den Slice und rufen Sie dieSpeak()-Methode für jeden Sprecher auf, wobei das Ergebnis ausgegeben wird - Parsen Sie die Eingaben, um die entsprechenden Sprecherinstanzen basierend auf den angegebenen Typen und Namen zu erstellen
- Speichern Sie alle Sprecher in einem Slice von
Speaker-Interfaces - Rufen Sie
makeAllSpeakmit 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
1Fortgeschrittener Kontrollfluss
Switch mit `fallthrough`Abbrechen von verschachtelten SchleifenFortsetzen einer bestimmten SchleifeDie `goto`-AnweisungZusammenfassung – Fortgeschrittene Schleifensteuerung4Projekt: Einfache Aufgabenliste
Projekt-SetupEine Aufgabe hinzufügen2Structs und Methoden
Methoden für Structs definierenValue ReceiverPointer ReceiverReceiver auswählenMethoden vs. FunktionenZusammenfassung – Struct-Verhalten5Maps im Detail
Maps von StructsPointer als Map-WertePrüfen auf Nil-MapsMaps vergleichenZusammenfassung – Wortfrequenz-Zähler8Projekt: Einfache Bestandsverwaltung
ProjektübersichtLagerbestand prüfen11Abschlussherausforderungen
Einfache KontaktlisteEinfacher Zahlen-ValidatorSammler für eindeutige Elemente3Interfaces (Die Grundlagen)
Was ist ein Interface?Ein Interface definierenEin Interface implementierenInterface-Typen verwendenLeeres InterfaceType AssertionsType SwitchZusammenfassung – Formen und Verhalten