Junior
Kako proveriti tip interfejsa u Go?
sobes.tech АИ
Одговор од АИ
U Go-u se često koristi type assertion ili type switch za proveru tipa interfejsa.
Ako imate promenljivu tipa interfejsa, na primer var i interface{}, i želite da proverite da li implementira određeni interfejs ili je određenog tipa, možete to uraditi ovako:
if v, ok := i.(MyInterface); ok {
// i implementira MyInterface, v je konvertovani tip
}
Za proveru više tipova, zgodno je koristiti type switch:
switch v := i.(type) {
case MyInterface:
// i implementira MyInterface
case *MyStruct:
// i je pokazivač na MyStruct
default:
// drugi tip
}
Ako želite da proverite tip na dinamički način, možete koristiti paket reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i implementira MyInterface
}
Na ovaj način, za jednostavne slučajeve, dovoljni su type assertion ili type switch; za složenije slučajeve, koristi se reflection.