Sobes.tech
Back to questions
Senior
4

Расскажи про пустую структуру struct{}. Кейсы использования, сколько памяти занимает?

Companies where asked
СБК ПАРУС

Answer from AI

sobes.tech AI

В Go пустая структура struct{} — это структура без полей.

Особенности:

  • Занимает 0 байт памяти.
  • Используется для обозначения отсутствия данных, но с возможностью иметь тип.

Кейсы использования:

  • Множества: можно использовать map[KeyType]struct{} для хранения уникальных ключей без дополнительной нагрузки по памяти.
  • Сигналы и синхронизация: канал типа chan struct{} часто используется для уведомлений без передачи данных.
  • Пустые значения: когда нужно передать или вернуть тип, но без содержимого.

Пример использования множества:

set := make(map[string]struct{})
set["apple"] = struct{}{}
if _, exists := set["apple"]; exists {
    fmt.Println("apple есть в множестве")
}

Таким образом, struct{} — эффективный способ обозначить присутствие без хранения данных.