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