Maison >développement back-end >Golang >Go Generics peut-il imposer la présence de champs spécifiques dans les structures ?
Application de la présence sur le terrain avec des génériques dans Go
Lors du développement de fonctions génériques dans Go, il peut être crucial de s'assurer que les valeurs transmises respectent des critères de champ spécifiques . Dans ce contexte, une question courante se pose : pouvons-nous utiliser des génériques pour valider la présence de certains champs, tels que ID int, dans les valeurs transmises ?
Bien que diverses approches aient été tentées, l'implémentation actuelle des génériques Go dans Go 1.18 introduit une limitation : les types structurels ne sont pas pris en charge. Par conséquent, définir une fonction générique qui n'accepte que des valeurs avec un champ spécifique, sans s'appuyer sur des méthodes d'interface, est actuellement irréalisable.
Cependant, il est crucial de comprendre la signification de la syntaxe d'approximation ~T. Dans l'exemple fourni, ~struct{ ID int } implique des types dont le type sous-jacent est précisément struct{ ID int }. Cela exclut les structures qui possèdent un champ ID int aux côtés d'autres champs.
Bien qu'il existe une proposition de termes de champ dans les contraintes d'interface, elle n'est pas incluse dans Go 1.18. Par conséquent, l'implémentation actuelle des génériques ne dispose pas de la syntaxe nécessaire pour définir des types de structures partielles.
Par conséquent, pour garantir que les valeurs possèdent des champs spécifiques, la seule option viable reste de définir les méthodes correspondantes dans une interface.
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!