Sobes.tech
Junior

Kuidas kontrollida Go liidese tüüpi?

sobes.tech AI

Vastus AI-lt

Go keeles kasutatakse sageli type assertion või type switch-i, et kontrollida liidese tüüpi.

Kui teil on muutuja liidese tüübiga, näiteks var i interface{}, ja soovite kontrollida, kas see rakendab konkreetset liidest või on konkreetse tüübiga, saate seda teha järgmiselt:

if v, ok := i.(MyInterface); ok {
    // i rakendab MyInterface, v on teisendatud tüüp
}

Mitme tüübi kontrollimiseks on mugav kasutada type switch:

switch v := i.(type) {
case MyInterface:
    // i rakendab MyInterface
case *MyStruct:
    // i on viit MyStruct-ile
default:
    // muu tüüp
}

Kui soovite tüüpi dünaamilisemalt kontrollida, saate kasutada paketti reflect:

import "reflect"

t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
    // i rakendab MyInterface
}

Seega, lihtsatel juhtudel piisab type assertion või type switch-st; keerulisematel juhtudel kasutatakse reflection-i.