В 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.