Ответ
Union в Go (обычно реализуется через интерфейсы или interface{}) позволяет хранить значения разных типов в одной переменной. Это полезно, когда нужно обрабатывать разнородные данные, например, в JSON-парсинге или при работе с БД.
Пример с interface{}:
func printValue(v interface{}) {
switch val := v.(type) {
case int:
fmt.Println("Integer:", val)
case string:
fmt.Println("String:", val)
default:
fmt.Println("Unknown type")
}
}
Основные сценарии использования:
- Обработка данных неизвестного типа
- Работа с динамическими структурами (JSON/XML)
- Реализация полиморфного поведения
Важно: чрезмерное использование interface{} снижает типобезопасность, поэтому лучше использовать конкретные типы, когда это возможно. В Go 1.18+ для подобных задач можно использовать дженерики.