Sobes.tech
Junior — Middle

Hogyan lehet meghatározni az Any interfészen keresztül továbbított konkrét adattípust?

sobes.tech MI

Válasz az MI-től

Go nyelven az interface{} (ami az Any megfelelője) által átadott konkrét adattípus meghatározásához a következő módszereket használják:

  • Típus-állítás (type assertion): Lehetővé teszi, hogy ellenőrizzük és elérjük egy adott típus értékét az interfészből.
var i interface{} = 42

// Típusellenőrzés hibakezeléssel
value, ok := i.(int)
if ok {
    fmt.Println("Ez egy int értékkel", value)
} else {
    fmt.Println("Nem int")
}
  • Típus váltás (type switch): Lehetővé teszi több típus ellenőrzését és a megfelelő kód végrehajtását.
switch v := i.(type) {
case int:
    fmt.Println("int", v)
case string:
    fmt.Println("string", v)
default:
    fmt.Println("ismeretlen típus")
}
  • Reflexió (package reflect): Bonyolultabb esetekben használják, amikor a típus nem ismert előre.
import "reflect"

func printType(i interface{}) {
    t := reflect.TypeOf(i)
    fmt.Println("Érték típusa:", t)
}

A legtöbb esetben elegendő a típus-állítás vagy a típus váltás használata a interface{}-en keresztül átadott típus meghatározásához.