Sobes.tech
Junior

Hoe controleer je het type interface in Go?

sobes.tech AI

Antwoord van AI

In Go wordt vaak type assertion of type switch gebruikt om het type van een interface te controleren.

Als je een variabele hebt van het interface-type, bijvoorbeeld var i interface{}, en je wilt controleren of deze een specifiek interface implementeert of een bepaald type is, kun je het zo doen:

if v, ok := i.(MyInterface); ok {
    // i implementeert MyInterface, v is het geconverteerde type
}

Voor het controleren van meerdere types is het handig om een type switch te gebruiken:

switch v := i.(type) {
case MyInterface:
    // i implementeert MyInterface
case *MyStruct:
    // i is een pointer naar MyStruct
default:
    // ander type
}

Als je het type op een meer dynamische manier wilt controleren, kun je het reflect-pakket gebruiken:

import "reflect"

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

Zo zijn voor eenvoudige gevallen type assertion of type switch voldoende; voor complexere gevallen wordt reflection gebruikt.