Menu
Coddy logo textTech

Aus einem Set entfernen

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

Manchmal müssen Sie Elemente aus Ihrem Set entfernen, und Go macht dies mit der integrierten delete()-Funktion ganz einfach. Da Ihr Set im Grunde eine Map ist, funktioniert das Entfernen eines Elements genau wie das Entfernen eines Schlüssels aus einer Map.

Um ein Element aus Ihrem Set zu entfernen, verwenden Sie die Funktion delete() mit Ihrem Set und dem Element, das Sie entfernen möchten:

delete(colors, "red")

Die Funktion delete() nimmt zwei Parameter entgegen: die Map (dein Set) und den Schlüssel, den du entfernen möchtest. Wenn das Element im Set vorhanden ist, wird es entfernt. Wenn das Element nicht existiert, macht die Funktion nichts – es wird kein Fehler ausgelöst.

Dieses Verhalten ist ideal für Sets, da man oft sicherstellen möchte, dass ein Element nicht vorhanden ist, unabhängig davon, ob es ursprünglich dort war. Die Operation ist schnell und effizient und behält die Leistungsvorteile der zugrunde liegenden Map-Implementierung von Go bei.

challenge icon

Aufgabe

Einfach

Erstelle ein Bibliotheksbuchverwaltungssystem, das Bücher aus verschiedenen Genresammlungen mithilfe des Go-Set-Idioms entfernt. Diese Herausforderung zeigt, wie die Funktion delete() verwendet wird, um Elemente aus Sets zu entfernen und dabei den Entfernungsvorgang zu verfolgen.

Du erhältst zwei Eingaben:

  • Eine Zeichenkette mit Büchern aus der Belletristik-Sammlung, getrennt durch Kommas (z. B. "1984,Dune,Foundation,Neuromancer,Brave New World")
  • Eine Zeichenkette mit den zu entfernenden Büchern, getrennt durch Kommas (z. B. "Dune,Harry Potter,Foundation,Twilight,1984")

Deine Aufgabe ist es:

  1. Ein Set mit dem Go-Idiom map[string]struct{} zu erstellen, um die Bücher der Belletristik-Sammlung zu speichern
  2. Die erste Eingabezeichenkette durch Aufteilen an den Kommas zu analysieren, um einzelne Buchtitel zu erhalten
  3. Jedes Buch mithilfe des leeren Struct-Literals {} als Wert zu deinem Set hinzuzufügen
  4. Die zweite Eingabezeichenkette durch Aufteilen an den Kommas zu analysieren, um die Liste der zu entfernenden Bücher zu erhalten
  5. Für jedes zu entfernende Buch mithilfe des Komma-ok-Idioms zu prüfen, ob es im Set vorhanden ist
  6. Den Entfernungsvorgang für jedes verarbeitete Buch anzuzeigen:
    • Wenn das Buch in der Sammlung vorhanden ist: "Removing: [book_title]"
    • Wenn das Buch nicht in der Sammlung vorhanden ist: "Not found: [book_title]"
  7. Die Funktion delete() zu verwenden, um Bücher zu entfernen, die im Set vorhanden sind
  8. Nach der Verarbeitung aller Entfernungsanfragen eine Zusammenfassung anzuzeigen:
    • "Initial collection size: [initial_count]"
    • "Removal requests: [requests_count]"
    • "Books successfully removed: [removed_count]"
    • "Books not found: [not_found_count]"
    • "Final collection size: [final_count]"
  9. Zum Schluss alle verbleibenden Bücher in der Sammlung aufzulisten:
    • Überschrift: "Remaining books in fiction collection:"
    • Jedes Buch in einer eigenen Zeile: "- [book_title]"
    • Wenn keine Bücher übrig bleiben: "- Collection is empty"

Verwende das Paket strings, um die Eingabezeichenketten an den Kommas aufzuteilen. Diese Herausforderung zeigt, wie die Funktion delete() Elemente sicher aus einem Go-Set entfernt, ohne Fehler auszulösen, selbst wenn versucht wird, nicht vorhandene Elemente zu entfernen, wodurch sie sich ideal für Bereinigungsvorgänge eignet.

Probier es selbst

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strings"
)

func main() {
	// Eingabe mit Scanner lesen, um Buchtitel mit Leerzeichen zu unterstützen
	scanner := bufio.NewScanner(os.Stdin)

	scanner.Scan()
	fictionBooks := scanner.Text()
	scanner.Scan()
	booksToRemove := scanner.Text()

	// Eingabe-Strings parsen
	fictionList := strings.Split(fictionBooks, ",")
	removeList := strings.Split(booksToRemove, ",")

	// TODO: Schreiben Sie Ihren Code unten
	// 1. Erstellen Sie ein Set mit map[string]struct{}, um Belletristik-Bücher zu speichern
	// 2. Fügen Sie jedes Buch aus fictionList zum Set hinzu
	// 3. Verarbeiten Sie jedes Buch in removeList und prüfen Sie, ob es existiert
	// 4. Entfernungsprozess anzeigen und die Funktion delete() verwenden
	// 5. Zusammenfassende Statistiken anzeigen
	// 6. Verbleibende Bücher in der Sammlung auflisten
	// Denken Sie daran, die verbleibenden Bücher für eine konsistente Ausgabe zu sortieren

	_ = sort.Strings // Entfernen Sie diese Zeile, sobald Sie sort verwenden
	_ = fmt.Println  // Entfernen Sie diese Zeile, sobald Sie fmt verwenden
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Go-Compiler