Sobes.tech
Junior

Hogyan lehet ellenőrizni az interfész típusát Go-ban?

sobes.tech MI

Válasz az MI-től

Go nyelvben az interfész típusának ellenőrzésére gyakran használják a type assertion vagy a type switch-t.

Ha van egy var i interface{} típusú változód, és meg akarod nézni, hogy egy adott interfészt valósít-e meg, vagy egy konkrét típusú-e, így teheted:

if v, ok := i.(MyInterface); ok {
    // i megvalósítja a MyInterface-t, v a konvertált típus
}

Több típus ellenőrzéséhez kényelmes a type switch:

switch v := i.(type) {
case MyInterface:
    // i megvalósítja a MyInterface-t
case *MyStruct:
    // i egy pointer a MyStruct-re
default:
    // más típus
}

Ha dinamikusabban szeretnéd ellenőrizni a típust, használhatod a reflect csomagot:

import "reflect"

t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
    // i megvalósítja a MyInterface-t
}

Így az egyszerű esetekben elegendő a type assertion vagy a type switch, a bonyolultabb esetekben a reflection használata szükséges.