Junior — Middle
Czy można utworzyć strukturę lub typ danych podobny do zbioru w języku Go?
sobes.tech AI
Odpowiedź od AI
W języku Go nie ma wbudowanego typu "zbiór" (set), ale można go zaimplementować za pomocą mapy (map) z kluczami odpowiedniego typu i wartościami typu struct{} lub bool. Użycie struct{} oszczędza pamięć, ponieważ pusty struktur nie zajmuje miejsca.
Przykład implementacji zbioru łańcuchów:
// Tworzymy zbiór łańcuchów
set := make(map[string]struct{})
// Dodajemy element
set["apple"] = struct{}{}
// Sprawdzamy, czy element istnieje
if _, exists := set["apple"]; exists {
fmt.Println("Element jest w zbiorze")
}
// Usuwamy element
delete(set, "apple")
W ten sposób mapa z kluczami i pustymi wartościami efektywnie modeluje zbiór.