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