Menu
Coddy logo textTech

Sprawdzanie przynależności

Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 34 z 68.

Teraz, gdy potrafisz dodawać elementy do zbioru, kolejną niezbędną operacją jest sprawdzanie, czy w zbiorze znajduje się określony element. Właśnie tutaj idiom Go „comma ok” staje się niezwykle przydatny.

Aby sprawdzić, czy element istnieje w twoim zbiorze, użyj tej samej składni co przy sprawdzaniu, czy klucz znajduje się w mapie:

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

Podkreślenia _ używamy, ponieważ nie interesuje nas rzeczywista wartość (która zawsze jest pustą strukturą). Interesuje nas tylko zmienna logiczna ok, która informuje nas, czy klucz istnieje.

Możesz też użyć tego wzorca bezpośrednio w instrukcji if, aby uzyskać bardziej zwięzły kod:

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

To sprawdzanie przynależności jest szybkie i wydajne, ponieważ wykorzystuje zoptymalizowaną implementację map w Go, zapewniając korzyści wydajnościowe prawdziwej struktury danych typu zbiór.

challenge icon

Wyzwanie

Łatwy

Zbuduj system weryfikacji członków zespołu, który sprawdza, czy określone osoby należą do zespołu projektowego, używając idiomu zbioru w Go. To wyzwanie pokazuje, jak używać idiomu comma ok do sprawdzania przynależności do zbioru.

Otrzymasz dwa wejścia:

  • Ciąg zawierający członków zespołu oddzielonych przecinkami (np. "Alice,Bob,Charlie,Diana,Eve")
  • Ciąg zawierający osoby do sprawdzenia, oddzielone przecinkami (np. "Bob,Frank,Alice,Grace,Charlie")

Twoim zadaniem jest:

  1. Utworzyć zbiór za pomocą idiomu Go map[string]struct{}, aby przechowywać członków zespołu
  2. Przetworzyć pierwszy ciąg wejściowy, dzieląc go po przecinkach, aby uzyskać poszczególne imiona członków zespołu
  3. Dodać każdego członka zespołu do zbioru, używając literału pustej struktury {} jako wartości
  4. Przetworzyć drugi ciąg wejściowy, dzieląc go po przecinkach, aby uzyskać listę osób do zweryfikowania
  5. Dla każdej osoby do sprawdzenia użyć idiomu comma ok _, ok := teamSet[person], aby sprawdzić przynależność
  6. Wyświetlić wyniki weryfikacji dla każdej sprawdzanej osoby:
    • Jeśli dana osoba należy do zespołu: "[person] is on the team"
    • Jeśli dana osoba nie należy do zespołu: "[person] is not on the team"
  7. Po sprawdzeniu wszystkich osób wyświetlić podsumowanie:
    • "Team size: [team_member_count]"
    • "People checked: [people_checked_count]"
    • "Team members found: [found_count]"
    • "Non-team members: [not_found_count]"

Użyj pakietu strings, aby podzielić ciągi wejściowe po przecinkach. To wyzwanie pokazuje, jak idiom comma ok zapewnia bezpieczny i wydajny sposób sprawdzania przynależności do zbioru w Go, zwracając zarówno wartość, jak i wartość logiczną wskazującą, czy klucz istnieje.

Spróbuj swoich sił

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Wczytaj dane wejściowe
	var teamMembersInput string
	var peopleToCheckInput string
	fmt.Scanln(&teamMembersInput)
	fmt.Scanln(&peopleToCheckInput)
	
	// Przetwórz ciągi wejściowe
	teamMembers := strings.Split(teamMembersInput, ",")
	peopleToCheck := strings.Split(peopleToCheckInput, ",")
	
	// TODO: Napisz swój kod poniżej
	// Utwórz zbiór przy użyciu map[string]struct{}
	// Dodaj członków zespołu do zbioru
	// Sprawdź każdą osobę, używając idiomu comma ok
	// Wyświetl wyniki weryfikacji i podsumowanie
	
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Go online