Junior
Ako skontrolovať typ rozhrania v Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa často používa type assertion alebo type switch na kontrolu typu rozhrania.
Ak máte premennú typu rozhrania, napríklad var i interface{}, a chcete overiť, či implementuje konkrétne rozhranie alebo je určitého typu, môžete to urobiť takto:
if v, ok := i.(MyInterface); ok {
// i implementuje MyInterface, v je prevedený typ
}
Pre kontrolu viacerých typov je vhodné použiť type switch:
switch v := i.(type) {
case MyInterface:
// i implementuje MyInterface
case *MyStruct:
// i je ukazovateľ na MyStruct
default:
// iný typ
}
Ak chcete typ kontrolovať dynamickejšie, môžete použiť balíček reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i implementuje MyInterface
}
Týmto spôsobom sú pre jednoduché prípady dostatočné type assertion alebo type switch, pre zložitejšie prípady sa používa reflection.