Sammler für eindeutige Elemente
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 68 von 68.
Aufgabe
EinfachErstelle ein System zur Entfernung von Duplikaten, das Goz idiomatisches Set-Muster verwendet, um eindeutige Elemente aus Sammlungen von Zeichenfolgen zu filtern. Diese Herausforderung testet deine Fähigkeit, das Idiom map[string]struct{} zu verwenden, um bereits gesehene Elemente zu verfolgen und Sammlungen zu erstellen, die nur eindeutige Elemente enthalten.
Du erhältst zwei Eingaben:
- Eine Zeichenfolge mit durch Kommas getrennten Elementen (z. B.
"apple,banana,apple,orange,banana,grape,apple") - Eine Zeichenfolge mit zusätzlichen Elementen, die ebenfalls durch Kommas getrennt sind (z. B.
"kiwi,apple,mango,banana,kiwi")
Deine Aufgabe ist es:
- Eine Funktion namens
getUniqueItemszu erstellen, die ein Slice von Zeichenfolgen übernimmt und ein neues Slice zurückgibt, das nur die eindeutigen Zeichenfolgen enthält - Innerhalb dieser Funktion das Idiom
map[string]struct{}zu verwenden, um zu verfolgen, welche Elemente bereits gesehen wurden - Das Eingabe-Slice zu durchlaufen und für jedes Element:
- Mit dem Komma-ok-Idiom zu prüfen, ob das Element in deinem Set vorhanden ist
- Wenn das Element noch nicht gesehen wurde, es sowohl zum Set als auch zum Ergebnis-Slice hinzuzufügen
- Die erste Eingabe durch Aufteilen an Kommas zu verarbeiten, um die anfängliche Elementliste zu erhalten
- Die zweite Eingabe durch Aufteilen an Kommas zu verarbeiten, um die zusätzlichen Elemente zu erhalten
- Die Systemkopfzeile anzuzeigen:
"=== UNIQUE ITEM COLLECTOR ===" - Die ursprünglichen Elemente anzuzeigen:
"Original items: [comma-separated list of all original items]" - Die zusätzlichen Elemente anzuzeigen:
"Additional items: [comma-separated list of all additional items]" - Deine Funktion
getUniqueItemszu verwenden, um eindeutige Elemente aus der ursprünglichen Liste zu erhalten - Die eindeutigen ursprünglichen Elemente anzuzeigen:
"Unique original items: [comma-separated list of unique items from original list]" - Beide Eingabe-Slices zu einem einzigen Slice zu kombinieren, das alle Elemente enthält
- Deine Funktion
getUniqueItemszu verwenden, um eindeutige Elemente aus der kombinierten Liste zu erhalten - Die endgültigen eindeutigen Elemente anzuzeigen:
"Final unique items: [comma-separated list of all unique items]" - Die Sammlungsstatistiken anzuzeigen:
"=== COLLECTION STATISTICS ===""Total original items: [count of original items]""Total additional items: [count of additional items]""Total combined items: [count of all items combined]""Unique items found: [count of unique items]""Duplicates removed: [total combined items minus unique items]"
- Die Abschlussmeldung anzuzeigen:
"Unique item collection completed successfully"
Verwende das Paket strings, um Eingabezeichenfolgen aufzuteilen, und das Paket fmt für die Ausgabe. Verwende beim Zusammenfügen von Elementen zur Anzeige strings.Join mit einem Komma als Trennzeichen. Diese Herausforderung zeigt, wie Goz Set-Idiom das häufige Problem des Entfernens von Duplikaten aus Sammlungen effizient löst – ein Muster, das du häufig in Anwendungen zur Datenverarbeitung verwenden wirst.
Probier es selbst
package main
import (
"fmt"
"strings"
)
func main() {
// Eingabe lesen
var input1 string
var input2 string
fmt.Scanln(&input1)
fmt.Scanln(&input2)
// Eingabe-Strings in Slices parsen
originalItems := strings.Split(input1, ",")
additionalItems := strings.Split(input2, ",")
// TODO: Schreiben Sie Ihren Code hier
// 1. Erstellen Sie die Funktion getUniqueItems, die das Idiom map[string]struct{} verwendet
// 2. Verarbeiten Sie die ursprünglichen Elemente, um eindeutige Elemente zu erhalten
// 3. Kombinieren Sie beide Slices und erhalten Sie eindeutige Elemente aus der kombinierten Liste
// 4. Statistiken berechnen
// System-Header anzeigen
fmt.Println("=== UNIQUE ITEM COLLECTOR ===")
// Ursprüngliche und zusätzliche Elemente anzeigen
fmt.Printf("Original items: %s\n", strings.Join(originalItems, ","))
fmt.Printf("Additional items: %s\n", strings.Join(additionalItems, ","))
// TODO: Eindeutige ursprüngliche Elemente, finale eindeutige Elemente und Statistiken anzeigen
// Verwenden Sie fmt.Printf und strings.Join für die Ausgabeformatierung
}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