Sobes.tech
Junior — Middle

Роли асосии primitive Union чист ва дар кадом ҳолатҳо истифода мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар Го, ягон primitivesи номи Union ҳамчун такӣ вуҷуд надорад, аммо вазифаҳои монандро интерфейсҳо ва switch-ҳои типӣ иҷро мекунанд. Идеяи асосии union ин қобилияти нигоҳ доштани арзиши як аз чанд намуд дар як тағйирёбанда аст. Дар забонҳое, ки Union доранд (масалан, C), ин ёдгирии ёдгории хотираро сарфа мекунад ва имкон медиҳад, ки бо намудҳои гуногуни маълумот дар як ҷо кор кард.

Дар Го, барои чунин мақсадҳо, интерфейсҳоро истифода мебаранд, масалан, 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 бо намудҳои гуногуни арзишҳо.