Maison >développement back-end >Golang >Comment Go Generics peut-il imposer la disponibilité de champs spécifiques dans les valeurs transmises ?
Utilisation de génériques pour renforcer la disponibilité des champs dans les valeurs transmises
Dans Go, les génériques peuvent être utilisés pour améliorer la sécurité des types et éliminer le besoin d'informations explicites. moulage de type. Cependant, lorsque vous travaillez avec des valeurs qui nécessitent des champs spécifiques, l'implémentation actuelle des génériques dans Go 1.18 pose un défi.
Énoncé du problème
Comme indiqué dans l'exemple fourni, les tentatives de définition d'une fonction générique qui accepte des valeurs avec un champ spécifique, tel que ID int, n'ont pas abouti avec l'approche actuelle. L'objectif est de garantir que chaque valeur transmise à la fonction possède cette propriété, qui est accessible au sein de la fonction elle-même.
Limitations des génériques Go 1.18
Actuellement, Go les génériques ne prennent pas en charge les types structurels, ce qui signifie qu'ils ne peuvent pas déterminer si une structure possède un champ particulier basé uniquement sur sa structure. L'approximation ~T (tilde-type) est utilisée pour indiquer les types dont le type sous-jacent est exactement T.
Dans l'exemple, ~struct{ ID int } spécifie les types dont le type sous-jacent est exactement struct{ ID int }. Cela n'inclut pas les structures qui possèdent le champ ID int aux côtés d'autres champs.
Solution
En l'absence de termes de champ dans les contraintes d'interface, il n'est pas possible d'appliquer la disponibilité de champs spécifiques utilisant des génériques dans Go 1.18 sans définir de méthode dans une interface. Par conséquent, pour le cas où l'accès à un champ commun dans une union est souhaité, l'explication fournie doit être consulté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!