Junior — Middle
Akými spôsobmi možno určiť konkrétny typ dát prenášaných cez rozhranie Any?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa na určenie konkrétneho typu dát, ktorý je odovzdaný cez rozhranie interface{} (podobne Any), sa používajú nasledujúce spôsoby:
- Typová asercia (type assertion): Umožňuje overiť a získať hodnotu konkrétneho typu z rozhrania.
var i interface{} = 42
// Kontrola typu s ošetrením chyby
value, ok := i.(int)
if ok {
fmt.Println("Je to int s hodnotou", value)
} else {
fmt.Println("Nie je to int")
}
- Typový prepínač (type switch): Umožňuje skontrolovať viacero typov a vykonať zodpovedajúci kód.
switch v := i.(type) {
case int:
fmt.Println("int", v)
case string:
fmt.Println("string", v)
default:
fmt.Println("neznámy typ")
}
- Reflexia (package reflect): Používa sa pre zložitejšie prípady, keď typ nie je vopred známy.
import "reflect"
func printType(i interface{}) {
t := reflect.TypeOf(i)
fmt.Println("Typ hodnoty:", t)
}
Vo väčšine prípadov stačí použiť typovú aserciu alebo typový prepínač na určenie typu, ktorý je odovzdaný cez interface{}.