💬 Для каких целей в Go может использоваться пустая структура?



☑️ Пустая структура (struct{}{}) не занимает места в памяти. Это делает её идеальной для создания коллекций, где важны только ключи, а значения не нужны.



// Использование для уникального набора значений (set)

uniqueSet := make(map[string]struct{})

uniqueSet["value1"] = struct{}{}

// Проверка наличия значения

_, exists := uniqueSet["value1"]





☑️ Пустые структуры часто используются в каналах для передачи сигналов. Это полезно для синхронизации горутин или передачи сигналов без передачи данных.



done := make(chan struct{})

go func() {

// ...

done <- struct{}{} // Отправка сигнала о завершении

}()

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





☑️ Иногда пустые структуры используются как маркеры в сложных структурах данных или для реализации определённых паттернов проектирования, таких как Singleton или Null Object.



type Singleton struct{}



func (s Singleton) DoSomething() {

// Реализация метода

}



var instance Singleton

instance.DoSomething()