Paramètres de type dans les méthodes d'interface : un dilemme des génériques Go
Dans la quête des génériques par Go, une pierre d'achoppement particulière émerge : l'interdiction du type paramètres dans les définitions de méthodes d’interface. Cette restriction, rencontrée par un développeur tentant d'extraire un magasin de clés/valeurs, nous laisse nous demander pourquoi et si une solution existe.
Raison d'être derrière la restriction
The Go L'équipe principale a pris la décision délibérée de concevoir d'interdire les paramètres de type dans les interfaces pour plusieurs raisons :
Contourner la restriction
Bien que la restriction puisse être frustrant, ce n'est pas insurmontable. La solution proposée dans la proposition Paramètres de type consiste à déplacer le paramètre de type dans la définition du type d'interface elle-même :
type Reader[V Unmarshaler] interface { Read(bucket []byte, k ...[]byte) ([][]byte, error) ReadDoc(bucket []byte, factory func() (V, error), k ...[]byte) ([]V, error) } type Unmarshaler interface { UnmarshalKV(v []byte) error }
Cette approche permet des interfaces génériques de type sécurisé tout en préservant les contraintes de conception du langage.
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!