Зачем нужен примитив Union

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

Ответ

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+ для подобных задач можно использовать дженерики.