Maison > développement back-end > Golang > Comment implémenter correctement les génériques dans les méthodes de l'interface Go ?

Comment implémenter correctement les génériques dans les méthodes de l'interface Go ?

Barbara Streisand
Libérer: 2024-12-06 17:59:11
original
468 Les gens l'ont consulté

How to Correctly Implement Generics in Go Interface Methods?

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
Copier après la connexion

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
Copier après la connexion

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
}
Copier après la connexion

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")
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal