Maison > développement back-end > Golang > Pourquoi utiliser l'identifiant vide dans les assertions de l'interface au moment de la compilation de Go ?

Pourquoi utiliser l'identifiant vide dans les assertions de l'interface au moment de la compilation de Go ?

Barbara Streisand
Libérer: 2024-12-24 08:01:17
original
491 Les gens l'ont consulté

Why Use the Blank Identifier in Go's Compile-Time Interface Assertions?

Objectif de l'identifiant vide dans l'affectation de variable

Lorsque vous rencontrez des affectations de variable comme celles-ci, vous vous demandez peut-être pourquoi un identifiant vide est utilisé :

var _ PropertyLoadSaver = (*Doubler)(nil)
Copier après la connexion

Cet identifiant vide joue un rôle crucial dans l'exécution des assertions au moment de la compilation, garantissant qu'un type spécifique satisfait aux exigences d'un interface.

Dans cet exemple, le type *Doubler est vérifié par rapport à l'interface PropertyLoadSaver. Si *Doubler n'implémente pas toutes les méthodes nécessaires définies dans l'interface, la compilation échouera avec une erreur indiquant qu'il manque une méthode spécifique à *Doubler.

Le code attribue une valeur nulle non typée à une variable de type PropertyLoadSaver en utilisant (*Doubler)(nil). Cette affectation n'est valide que si *Doubler implémente l'interface PropertyLoadSaver. Si ce n'est pas le cas, la compilation se terminera par un message d'erreur similaire à :

prog.go:21: cannot use (*Doubler)(nil) (type *Doubler) as type PropertyLoadSaver in assignment: *Doubler does not implement PropertyLoadSaver (missing Save method)
Copier après la connexion

L'identifiant vide _ est utilisé car la variable n'a pas besoin d'être référencée ailleurs dans le package. Une approche alternative utilisant un identifiant non vide est également possible :

var assertStarDoublerIsPropertyLoadSaver PropertyLoadSaver = (*Doubler)(nil)
Copier après la connexion

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 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