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
Libérer: 2024-12-30 20:29:17
original
264 Les gens l'ont consulté

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)
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal