Ответ
В Go можно использовать map только с ключами, без значений, используя struct{} в качестве типа значения. Это экономит память, так как struct{} занимает 0 байт.
Пример:
set := make(map[string]struct{})
// Добавление элементов
set["key1"] = struct{}{}
set["key2"] = struct{}{}
// Проверка наличия ключа
if _, exists := set["key1"]; exists {
fmt.Println("key1 exists")
}
// Удаление ключа
delete(set, "key2")
Преимущества:
- Экономия памяти по сравнению с
map[string]bool - Четко выражает намерение использовать структуру как множество
Альтернатива - использовать пакет golang.org/x/exp/maps (в Go 1.18+) для работы с множествами.