Sobes.tech
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{}.