Sobes.tech
Junior — Middle

Care este rolul principal al primitive Union și în ce situații este utilizată?

sobes.tech AI

Răspuns de la AI

În Go, nu există un primitive numit Union ca atare, dar roluri similare sunt îndeplinite de interfețe și tipuri cu ajutorul switch-urilor de tip. Ideea principală a unui union este posibilitatea de a stoca valoarea unuia dintre mai multe tipuri într-o singură variabilă. În limbajele unde există Union (de exemplu, C), acest lucru economisește memorie și permite lucrul cu diferite tipuri de date în același loc.

În Go, pentru astfel de scopuri, se folosesc interfețe, de exemplu, interface{}, și apoi, cu ajutorul assertion-urilor de tip sau switch-urilor de tip, se determină tipul specific în timpul execuției.

Exemplu de utilizare a unei interfețe pentru a imita un union:

func process(value interface{}) {
    switch v := value.(type) {
    case int:
        fmt.Println("valoare int", v)
    case string:
        fmt.Println("valoare string", v)
    default:
        fmt.Println("tip necunoscut")
    }
}

Se folosește această construcție atunci când trebuie să procesezi date de diferite tipuri în aceeași funcție sau structură, de exemplu, la parsarea JSON-urilor cu diferite tipuri posibile de valori.