Implémentation de génériques dans les méthodes d'interface
L'introduction récente de génériques par Go a ouvert de nouvelles possibilités pour créer des structures de données et des algorithmes génériques. Un cas d’utilisation courant consiste à définir des interfaces d’itérateur génériques. Cependant, la définition de telles interfaces peut entraîner des erreurs.
Erreur : le type de fonction ne peut pas avoir de paramètres de type
Lorsque vous essayez de définir une interface d'itérateur avec une méthode générique ForEachRemaining, vous peut rencontrer l'erreur suivante :
function type cannot have type parameters
Cette erreur se produit car les méthodes dans Go ne peuvent pas avoir leur propre type paramètres.
Erreur : les méthodes ne peuvent pas avoir de paramètres de type
Vous pouvez également essayer de déplacer le paramètre de type vers la signature de la méthode, mais cela entraînera une erreur différente :
methods cannot have type parameters
Solution : Interface générique avec type Paramètre
Pour résoudre ce problème, le paramètre type doit être spécifié sur l'interface elle-même. Voici un exemple de code mis à jour :
type Iterator[T any] interface { ForEachRemaining(action func(T) error) error // other methods }
Cette syntaxe spécifie que l'interface Iterator est générique par rapport au type T, et que toutes les méthodes de l'interface peuvent utiliser T comme paramètre de type.
Exemple d'utilisation
Voici un exemple présentant le corrigé code :
import "fmt" type Iterator[T any] interface { ForEachRemaining(action func(T) error) error } func main() { fmt.Println("This program compiles successfully") }
En déclarant l'interface avec un paramètre de type, vous pouvez utiliser efficacement les génériques dans les méthodes d'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!