Assurer la présence des champs dans les fonctions génériques
Dans Go, créer des fonctions génériques qui acceptent des valeurs avec des champs spécifiques peut être un défi. En utilisant des génériques, nous pouvons tenter d'appliquer de telles contraintes, comme le démontre l'exemple ci-dessous :
package main import ( "fmt" ) func Print[T IDer](s T) { fmt.Print(s.ID) } func main() { Print(Person{3, "Test"}) } type IDer interface { ~struct{ ID int } } type Person struct { ID int Name string } type Store struct { ID int Domain string }
Cependant, cette approche échoue car l'implémentation générique de Go 1.18 ne prend pas en charge les types structurels. Par conséquent, nous ne pouvons pas utiliser ce mécanisme pour garantir la présence de champs spécifiques dans les valeurs transmises.
Par conséquent, dans Go, il est nécessaire de définir des méthodes au sein des interfaces pour accéder aux champs communs lorsqu'il s'agit d'unions ou de garantie de champs présence dans les fonctions génériques.
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!