"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 aller lance une erreur "Impossible d'utiliser la fonction comme type dans l'argument", et comment puis-je le réparer?

Pourquoi aller lance une erreur "Impossible d'utiliser la fonction comme type dans l'argument", et comment puis-je le réparer?

Publié le 2025-03-22
Parcourir:772

Why Does Go Throw a

Impossible d'utiliser la fonction comme type dans l'argument: dépannage

Cette erreur se produit lors de la tentative de transmission d'une fonction en tant qu'argument à une autre fonction, mais la signature de fonction ne correspond pas au type attendu. En particulier dans le cas de la programmation GO, ce problème se pose lorsque vous essayez de passer une fonction qui prend un paramètre structuré spécifique et renvoie une interface et une erreur comme une exigence pour une autre fonction. Dans ce cas, l'argument s'attend à une implémentation de l'interface MessageHandler, qui a une signature de fonction spécifique.

Fixant le problème

pour résoudre cette erreur, vous devez vous assurer que votre fonction adhére à la signature du message de messagerie (&&&&&&] (Interface {}, erreur)

Cela signifie que votre fonction doit:

prendre un seul argument du type de livraison Messaged. être une erreur.

type MessageHandler func(MessageDelivery) (interface{}, error)

Exemple:
  • Modifiez vos fonctions pour s'aligner avec la signature requise:
  • func uppercaseHandler (md messageDelivery) (interface {}, erreur) { S.Reply (MessageTest {Strings.toupper (MD.Message. (String))}, MD.Delivery) Retour nil, nil } func reathandler (md messageDivery) (interface {}, erreur) { S.Reply (MessageTest {Strings.repeat (MD.Message. (String), 5)}, MD.Delivery) Retour nil, nil }

      Maintenant, ces fonctions sont compatibles avec l'interface MessageHandler et peuvent être transmises sous forme d'arguments à la méthode ConsumerFunc ().
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