Trouver des implémentations d'une interface dans la bibliothèque standard
Identifier les types conformes à une interface particulière dans la bibliothèque standard de Go peut être une compétence précieuse . Cependant, ce n'est pas toujours intuitif. Et s'appuyer uniquement sur l'expérience n'est peut-être pas l'approche la plus efficace.
Identification des implémentations d'interface
La bibliothèque standard fournit une variété d'outils qui peuvent aider dans ce processus. Une option consiste à utiliser la commande egrep :
egrep -nr '^func (.*) ReadByte\(' *
Cette commande recherche dans le code source toutes les occurrences d'une fonction qui commence par « func » et inclut le nom de la méthode « ReadByte » entre parenthèses.
Exemple
Considérons l'interface ByteReader dans le package io, qui définit une méthode pour lire un octet. En utilisant la commande egrep, nous pouvons lister tous les types de la bibliothèque standard qui implémentent cette interface :
lnml@fsc-r630:~/go/src/pkg$ egrep -nr '^func (.*) ReadByte\(' * bufio/bufio.go:165:func (b *Reader) ReadByte() (c byte, err error) { bytes/reader.go:59:func (r *Reader) ReadByte() (b byte, err error) { bytes/buffer.go:289:func (b *Buffer) ReadByte() (c byte, err error) { encoding/xml/xml_test.go:234:func (d *downCaser) ReadByte() (c byte, err error) { strings/reader.go:58:func (r *Reader) ReadByte() (b byte, err error) {
Comme nous pouvons le voir, le type Reader dans les packages bufio, bytes, encoding/xml et strings est tous implémenter l'interface ByteReader.
Ressources supplémentaires
En plus de egrep, le site Web Go (golang.org) propose une fonction de recherche sensible à la casse qui peut aider à localiser des implémentations d'interface spécifiques. En combinant ces outils avec la connaissance de la bibliothèque standard, les développeurs peuvent identifier efficacement les types qui satisfont à une interface souhaitée.
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!