Comprendre les vérifications d'implémentation d'interface dans Go
Dans Go, déterminer si une valeur implémente une interface peut être une tâche déroutante pour les débutants. Cet article vise à clarifier le processus avec des exemples à suivre.
Pourquoi utiliser les vérifications d'implémentation d'interface ?
Normalement, le compilateur effectue automatiquement des vérifications d'implémentation d'interface en fonction de la valeur connue taper. Cependant, lorsque vous travaillez avec des valeurs de types inconnus, il devient nécessaire de vérifier manuellement si une interface est implémentée.
Exemple d'analyse de code
Considérez l'exemple suivant :
type Somether interface { Method() bool } type MyType string func (mt MyType) Method2() bool { return true } func main() { val := MyType("hello") _, ok := val.(Somether) var _ Iface = (*MyType)(nil) }
Méthode 1 : Assertion avec commutateur de type
Dans le première tentative, le commutateur de type (_(Somether)) est utilisé pour vérifier si la valeur val implémente l'interface Somether. Cependant, cette approche nécessite un changement de type, ce qui peut ne pas être optimal.
Méthode 2 : Affectation à une interface vide
La deuxième méthode utilise l'interface vide :
var _ Iface = (*MyType)(nil)
Cette technique attribue un pointeur de type MyType vers une variable d'interface vide. Si MyType implémentait Somether, le code serait compilé sans erreur. Cependant, comme ce n'est pas le cas, une erreur de compilation sera générée indiquant que MyType n'implémente pas Somether.
Simplicité des vérifications d'implémentation de l'interface
C'est important à noter que ces vérifications sont principalement utilisées lorsque le type de la valeur est inconnu. Lorsque le type est connu, le compilateur vérifie automatiquement l'implémentation de l'interface.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!