Maison >développement back-end >Golang >Go Generics peut-il appliquer des champs spécifiques dans les valeurs transmises sans méthodes d'interface ?
S'assurer que les valeurs transmises ont des champs spécifiques à l'aide de génériques dans Go
Problème :
Les développeurs ont souvent besoin de fonctions génériques dans Go qui accepte des valeurs avec des champs spécifiques. Bien que des tentatives aient été faites en utilisant diverses approches, trouver une solution réalisable a été un défi.
Question :
Une fonction générique peut-elle être implémentée dans Go pour imposer la présence de certains champs ( par exemple, un champ "ID int") sur les valeurs transmises sans utiliser de méthode d'interface (telle que "GetID() int") ?
Réponse :
Malheureusement, la réponse est non.
Dans l'implémentation des génériques de Go pour la version 1.18, les types structurels ne sont pas pris en charge. Par conséquent, une méthode au sein d'une interface est nécessaire pour accéder aux champs communs dans les valeurs transmises.
Il est important de clarifier que la syntaxe de type tilde (~T) désigne un ensemble de types dont le type sous-jacent est précisément T. Ainsi "~struct{ ID int }" n'inclut pas les structures avec un champ "ID int" et des champs supplémentaires.
Bien que des propositions existent pour remédier à cette limitation, elles ne seront pas implémentées dans Go 1.18.
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!