Sobes.tech
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.