Menu
Coddy logo textTech

Prüfen auf Mitgliedschaft

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

Nachdem Sie nun Elemente zu Ihrem Set hinzufügen können, ist die nächste wesentliche Operation die Überprüfung, ob ein bestimmtes Element im Set vorhanden ist. Hier erweist sich das „comma ok“-Idiom von Go als äußerst nützlich.

Um zu prüfen, ob ein Element in Ihrem Set vorhanden ist, verwenden Sie dieselbe Syntax wie beim Prüfen auf einen Schlüssel in einer Map:

_, ok := colors["red"]
if ok {
    fmt.Println("Red is in the set")
} else {
    fmt.Println("Red is not in the set")
}

Der Unterstrich _ wird verwendet, da uns der eigentliche Wert egal ist (der immer ein leerer Struct ist). Uns interessiert nur die boolesche ok-Variable, die uns sagt, ob der Schlüssel existiert.

Sie können dieses Muster auch direkt in einer if-Anweisung verwenden, um den Code prägnanter zu gestalten:

if _, exists := colors["blue"]; exists {
    fmt.Println("Blue is in the set")
}

Diese Prüfung auf Mitgliedschaft ist schnell und effizient und nutzt die optimierte Map-Implementierung von Go, um Ihnen die Leistungsvorteile einer echten Set-Datenstruktur zu bieten.

quiz iconTeste dich selbst

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

quiz iconTeste dich selbst

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

quiz iconTeste dich selbst

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

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Verifizierungssystem für Teammitglieder, das mithilfe des Go-Set-Idioms prüft, ob bestimmte Personen Teil eines Projektteams sind. Diese Herausforderung zeigt, wie man das Comma-ok-Idiom verwendet, um die Mitgliedschaft in einem Set zu testen.

Sie erhalten zwei Eingaben:

  • Einen String, der Teammitglieder enthält, getrennt durch Kommas (z. B. "Alice,Bob,Charlie,Diana,Eve")
  • Einen String, der zu prüfende Personen enthält, getrennt durch Kommas (z. B. "Bob,Frank,Alice,Grace,Charlie")

Ihre Aufgabe ist es:

  1. Erstellen Sie ein Set unter Verwendung des Go-Idioms map[string]struct{}, um die Teammitglieder zu speichern
  2. Parsen Sie den ersten Eingabestring, indem Sie ihn an den Kommas aufteilen, um die Namen der einzelnen Teammitglieder zu erhalten
  3. Fügen Sie jedes Teammitglied zu Ihrem Set hinzu, wobei Sie das leere Struct-Literal {} als Wert verwenden
  4. Parsen Sie den zweiten Eingabestring, indem Sie ihn an den Kommas aufteilen, um die Liste der zu verifizierenden Personen zu erhalten
  5. Verwenden Sie für jede zu prüfende Person das Comma-ok-Idiom _, ok := teamSet[person], um die Mitgliedschaft zu testen
  6. Zeigen Sie die Verifizierungsergebnisse für jede geprüfte Person an:
    • Wenn die Person im Team ist: "[person] is on the team"
    • Wenn die Person nicht im Team ist: "[person] is not on the team"
  7. Zeigen Sie nach der Überprüfung aller Personen eine Zusammenfassung an:
    • "Team size: [team_member_count]"
    • "People checked: [people_checked_count]"
    • "Team members found: [found_count]"
    • "Non-team members: [not_found_count]"

Verwenden Sie das strings-Paket, um die Eingabestrings an den Kommas aufzuteilen. Diese Herausforderung zeigt, wie das Comma-ok-Idiom eine sichere und effiziente Methode bietet, um die Mitgliedschaft in einem Go-Set zu prüfen, indem sowohl der Wert als auch ein Boolean zurückgegeben werden, der angibt, ob der Schlüssel existiert.

Spickzettel

Um zu prüfen, ob ein Element in einem Set (Map) existiert, verwenden Sie das „comma ok“-Idiom:

_, ok := colors["red"]
if ok {
    fmt.Println("Red is in the set")
} else {
    fmt.Println("Red is not in the set")
}

Der Unterstrich _ verwirft den Wert, da uns nur die boolesche Variable ok interessiert, die angibt, ob der Schlüssel existiert.

Sie können dieses Muster auch direkt in einer if-Anweisung verwenden:

if _, exists := colors["blue"]; exists {
    fmt.Println("Blue is in the set")
}

Probier es selbst

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Eingabe lesen
	var teamMembersInput string
	var peopleToCheckInput string
	fmt.Scanln(&teamMembersInput)
	fmt.Scanln(&peopleToCheckInput)
	
	// Eingabe-Strings parsen
	teamMembers := strings.Split(teamMembersInput, ",")
	peopleToCheck := strings.Split(peopleToCheckInput, ",")
	
	// TODO: Schreiben Sie Ihren Code unten
	// Erstellen Sie ein Set mit map[string]struct{}
	// Teammitglieder zum Set hinzufügen
	// Jede Person mit dem Comma-Ok-Idiom prüfen
	// Verifizierungsergebnisse und Zusammenfassung anzeigen
	
}
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