Maison >développement back-end >Golang >Comment vérifier les implémentations d'interface dans Go ?

Comment vérifier les implémentations d'interface dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-23 18:56:14455parcourir

How to Verify Interface Implementations in Go?

Comprendre la vérification de l'implémentation de l'interface

Lorsque vous travaillez avec des interfaces Go, il est souvent nécessaire de vérifier si une valeur implémente une interface spécifique. Comprendre ces techniques de vérification peut être difficile, mais cet article vise à clarifier le processus.

Casting de type vs assertions de type

Casting de type, comme illustré par val := MyType("hello"), permet d'attribuer une valeur à un type différent. Cependant, le transtypage de type à lui seul n'indique pas si la valeur satisfait aux exigences d'une interface.

Les assertions de type, en revanche, vérifient si une valeur est conforme à une interface. La syntaxe _, ok := val.(Somether) tente d'affirmer que la variable val est de type Somether. Si val implémente Somether, ok sera vrai ; sinon, ce sera faux.

Vérification de type explicite

Pour effectuer une vérification de type explicite, vous pouvez utiliser la syntaxe suivante :

var _ Somether = (*MyType)(nil)

Cette notation déclare une variable de type Somether et attribue un pointeur vers une instance nulle de MyType. Si MyType n'implémente pas Somether, la compilation de ce code échouera, indiquant l'incohérence.

Approche plus simple

Dans la plupart des cas, il n'est pas nécessaire de vérifier manuellement l'implémentation de l'interface lorsque le type est connu. Le compilateur Go effectue automatiquement cette vérification au moment de la compilation. Cependant, si vous avez toujours besoin d'une vérification explicite, la méthode d'assertion de type est préférable car elle évite le risque d'erreurs de compilation.

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