Maison >développement back-end >Golang >Comment les génériques de Go peuvent-ils gérer des fonctions avec des paramètres d'interface basés sur un pointeur ?
Interface générique des pointeurs
Dans Go, la définition d'une interface pour l'implémentation d'un pointeur peut se faire via des génériques. Considérons le scénario suivant :
Problème :
Solution utilisant une interface générique avec un paramètre de type :
Pour y parvenir, vous pouvez déclarer le A interface avec un paramètre de type, en garantissant que le type d'implémentation est un pointeur vers son paramètre de type :
type A[P any] interface { SomeMethod() *P }
Ensuite, modifiez la signature de Handler comme suit :
func Handler[P any, T A[P]](callback func(result T)) { result := new(P) callback(result) }
Solution utilisant l'interface Wrapper :
Si vous ne pouvez pas modifier la définition de A, vous pouvez l'envelopper dans votre propre interface MyA :
type MyA[P any] interface { A *P }
Ensuite, mettez à jour la signature de Handler pour utiliser l'interface MyA :
func Handler[P any, T MyA[P]](callback func(result T)) { result := new(P) callback(result) }
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!