Назад к вопросам
Middle
228
questionbank

Какой вес имеет пустая структура в Go?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Вес пустой структуры struct{} в Go составляет 0 байт.

Это особенность языка, которая позволяет использовать пустые структуры для различных целей, не расходуя память. Например:

  • Для реализации множеств (set) с помощью мап핑а map[ключ]struct{}. Важно только наличие ключа, значение не имеет значения.
  • В качестве индикатора сигнала в каналах, когда важен сам факт получения сообщения, а не его содержимое.
// Пример использования пустой структуры для множества
set := make(map[string]struct{})
set["item1"] = struct{}{} // Добавляем элемент
_, exists := set["item1"] // Проверяем наличие элемента
fmt.Println(exists) // true

// Пример использования пустой структуры в канале
ch := make(chan struct{})

go func() {
	// Отправляем сигнал
	ch <- struct{}{}
}()

// Ожидаем сигнал
<-ch