Sobes.tech
Junior — Middle

Каква е основната роля на primitive Union и в кои ситуации се използва?

sobes.tech AI

Отговор от AI

В Go няма такъв примитив като Union, но подобна роля изпълняват интерфейсите и типовете с помощта на switch по тип. Основната идея на union е възможността да се съхранява стойност от един от няколко типа в една променлива. В езици, където има Union (например C), това спестява памет и позволява работа с различни типове данни на едно място.

В Go за такива цели се използват интерфейси, например interface{}, и след това с помощта на assertion или switch по тип се определя конкретният тип по време на изпълнение.

Пример за използване на интерфейс за имитация на union:

func process(value interface{}) {
    switch v := value.(type) {
    case int:
        fmt.Println("стойност int", v)
    case string:
        fmt.Println("стойност string", v)
    default:
        fmt.Println("непознат тип")
    }
}

Тази конструкция се използва, когато трябва да обработвате данни от различни типове в една и съща функция или структура, например при парсване на JSON с различни възможни типове стойности.