Sobes.tech
Junior

Comment vérifier le type d'une interface en Go?

sobes.tech IA

Réponse de l'IA

En Go, pour vérifier le type d'une interface, on utilise souvent assertion de type ou switch de type.

Si vous avez une variable de type interface, par exemple var i interface{}, et que vous souhaitez vérifier si elle implémente une interface spécifique ou si elle est d'un type particulier, vous pouvez faire comme suit :

if v, ok := i.(MyInterface); ok {
    // i implémente MyInterface, v est le type converti
}

Pour vérifier plusieurs types, il est pratique d'utiliser un switch de type :

switch v := i.(type) {
case MyInterface:
    // i implémente MyInterface
case *MyStruct:
    // i est un pointeur vers MyStruct
default:
    // autre type
}

Si vous souhaitez vérifier le type de manière plus dynamique, vous pouvez utiliser le package reflect :

import "reflect"

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

Ainsi, pour les cas simples, la simple assertion de type ou le switch de type suffisent ; pour des cas plus complexes, utilisez la reflection.