Zusammenfassung – Formen und Verhalten
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 19 von 68.
Aufgabe
EinfachIn 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:
- Ein
Speaker-Interface mit einer Methodensignatur zu definieren:Speak(), die eine Zeichenfolge zurückgibt - Eine
Person-Struktur mit einemName-Feld (string) zu definieren - Eine
Parrot-Struktur mit einemName-Feld (string) zu definieren - 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!"
- Person sollte Folgendes zurückgeben:
- Eine Funktion namens
makeAllSpeakzu erstellen, die ein Slice vonSpeaker-Interfaces als Parameter entgegennimmt - Innerhalb von
makeAllSpeakdas Slice zu durchlaufen und für jeden Sprecher dieSpeak()-Methode aufzurufen und das Ergebnis auszugeben - Die Eingaben zu verarbeiten, um anhand der angegebenen Typen und Namen die entsprechenden Sprecherinstanzen zu erstellen
- Alle Sprecher in einem Slice von
Speaker-Interfaces zu speichern makeAllSpeakmit 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
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Übe selbstständig: Online-Go-Compiler