Как реализовать set в Go?

Junior
781 просмотров
AFK Offer AI

В Go нет встроенного set, но его легко сделать через map[T]struct{}. Пустая структура struct{} занимает 0 байт, поэтому это самый эффективный вариант.

set := make(map[string]struct{})
set["a"] = struct{}{}
set["b"] = struct{}{}

// проверка наличия if _, ok := set["a"]; ok { fmt.Println("exists") }

// удаление delete(set, "a")

Можно использовать map[T]bool, но struct{} экономит память. Для потокобезопасного set оборачивай в sync.RWMutex или используй sync.Map.

Следующий вопрос

Как тестировать распределённую систему?