"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi ne puis-je pas utiliser une variable de type `* T` comme un« Stringer »dans GO Generics?

Pourquoi ne puis-je pas utiliser une variable de type `* T` comme un« Stringer »dans GO Generics?

Publié le 2025-03-24
Parcourir:616

Why Can't I Use a `*T` Type Variable as a `Stringer` in Go Generics?

Comprendre la variable "Impossible d'utiliser de type * t comme type de type dans l'argument" Erreur dans GO Generics

Dans l'extrait de code fourni, vous essayez d'inviter génériquement un paramètre de type Type Au lieu de cela. Par conséquent, * t n'est pas le même que * FOOBAR ou * BAR.

Méthode manquante:
    L'interface Stringer nécessite une méthode nommée a (). Actuellement, vos types Foo et Bar implémentent cette méthode sur les récepteurs de pointeurs, mais * t ne possède pas intrinsèquement cette méthode. Affirmez la sécurité de type avec assertion de type (moins optimal)
  • affirme que * t implémente Stringer en utilisant n'importe quel (t). (Stringer) dans la fonction DO.
  • Cette approche peut conduire à des paniques si t ne met pas réellement le stringer. Redéfinir la contrainte et personnaliser les génériques (préférés)

Ajouter Stringer comme contrainte à l'interface foobar. Utilisez des récepteurs de pointeur pour les types de Foo et Bar pour s'aligner avec la contrainte. Interface.

Passez une instance du type contraint comme un argument à bla. Bar] Interface { * T raidisseur } func bla [t foo | bar, u foobar [t]] () { var t t do (u (& t)) } func main () { Blah [foo] () }

Dans ce code révisé:

L'interface foobar inclut le stringer comme contrainte. contraintes.
  • blah prend un argument de type u, qui est une instance de l'interface FOOBAR contrainte.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3