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.