Как использовать Map только с ключом

«Как использовать Map только с ключом» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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+) для работы с множествами.