Maison >développement back-end >Golang >Comment puis-je vérifier si une valeur implémente une interface dans Go ?

Comment puis-je vérifier si une valeur implémente une interface dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-30 20:29:17264parcourir

How Can I Check if a Value Implements an Interface in Go?

Vérification de l'implémentation de l'interface dans Go

Dans Go, l'utilisation d'interfaces fournit un moyen de définir un comportement commun pour différents types de données. Cependant, déterminer si une valeur implémente une interface spécifique peut être délicat.

Assertion de type ou commutateur de type

La méthode la plus courante pour vérifier si une valeur implémente une interface se fait via une assertion de type :

_, ok := val.(Somether)

Cette assertion de type vérifie si la valeur val peut être convertie en type Somether. Si c'est le cas, il attribue la valeur convertie à _ et définit ok sur true ; sinon, il définit ok sur false.

Cependant, l'assertion de type suppose que val est une interface, ce qui n'est pas toujours le cas. Pour une vérification de type explicite, vous pouvez utiliser la méthode de commutation de type :

var _ Somether = (*MyType)(nil)

Dans cet exemple, nous déclarons une variable sans nom de type Somether et la définissons égale à un pointeur nul de type MyType. Cette syntaxe garantit que le compilateur vérifie si MyType implémente Somether, déclenchant une erreur de compilation si ce n'est pas le cas.

Simplicité des types connus

Il est important de noter que si le type de val est connu, le compilateur vérifie automatiquement s'il implémente Somether. Les vérifications explicites décrites ci-dessus ne sont nécessaires que lorsque le type est inconnu.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn