Maison > développement back-end > Golang > le corps du texte

Comment le compilateur de Go garantit-il la conformité de l'interface au moment de la compilation ?

Patricia Arquette
Libérer: 2024-10-29 22:21:29
original
282 Les gens l'ont consulté

How Does Go's Compiler Ensure Interface Compliance at Compile Time?

Vérification du type de compilation de conformité de l'interface Golang

Dans Go, le compilateur garantit qu'un type implémente les fonctions publiques d'une interface. C’est ce qu’on appelle la vérification du type au moment de la compilation. L'exemple de code de camlistore illustre ce concept.

var (
  _ blobref.StreamingFetcher = (*CachingFetcher)(nil)
  _ blobref.SeekFetcher      = (*CachingFetcher)(nil)
  _ blobref.StreamingFetcher = (*DiskCache)(nil)
  _ blobref.SeekFetcher      = (*DiskCache)(nil)
)
Copier après la connexion

Le préfixe _ indique qu'aucune variable n'est en cours de création. Au lieu de cela, les instructions sont utilisées pour spécifier que les types nommés implémentent les interfaces correspondantes.

La partie de droite (RHS) utilise la syntaxe de conversion (*T)(nil). Cette syntaxe crée une valeur nulle typée. Une valeur nulle est une valeur spéciale qui représente l'absence de valeur. Une valeur nulle typée est une valeur nulle qui a un type spécifique.

Dans ce cas, (*T)(nil) crée une valeur nulle qui a le type *T. Cela équivaut à déclarer une variable de pointeur et à lui attribuer la valeur nil. La valeur nulle peut ensuite être utilisée pour attribuer à un pointeur du même type.

Par exemple, le code suivant déclare une variable de pointeur f de type StreamingFetcher :

var f blobref.StreamingFetcher
Copier après la connexion

Le code suivant puis attribue une valeur nulle de type *CachingFetcher à f:

f = (*CachingFetcher)(nil)
Copier après la connexion

Cette affectation est valide car le type CachingFetcher implémente l'interface StreamingFetcher.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!