Maison >développement back-end >Golang >Pourquoi mon code Go produit-il une erreur « Impossible d'utiliser la fonction (type func()) comme type d'argument » lors du chaînage de services avec la bibliothèque asl ?

Pourquoi mon code Go produit-il une erreur « Impossible d'utiliser la fonction (type func()) comme type d'argument » lors du chaînage de services avec la bibliothèque asl ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-17 09:01:25542parcourir

Why Does My Go Code Produce a

"impossible d'utiliser la fonction (type func()) comme argument de type"

Ce code Go vise à démontrer le chaînage de services en utilisant divers des fonctionnalités telles que la consommation de messages, la publication de messages et la réponse aux messages. Le code utilise la bibliothèque asl pour gérer les opérations de messagerie.

Lors de la tentative d'exécution du code, un message d'erreur est rencontré, indiquant que les fonctions UpperCaseHandler et RepeatHandler ne peuvent pas être utilisées comme arguments de type asl.MessageHandler dans ConsumeFunc. méthode des services UpperCaser et Repeater, respectivement.

Pour résoudre ce problème, il est nécessaire de s'assurer que les signatures de fonction correspondent à celles attendues formater. Le type asl.MessageHandler attend une fonction qui prend un busboy.MessageDelivery comme argument et renvoie une interface{} et une erreur.

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

Les fonctions UpperCaseHandler et RepeatHandler dans votre code ne sont pas conformes à ce qui est attendu. signature. Il leur manque la valeur de retour d’erreur. Pour remédier à cela, modifiez les fonctions comme suit :

func UpperCaseHandler(md busboy.MessageDelivery) (interface{}, error) {
     s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery)
     return nil, nil
}

func RepeatHandler(md busboy.MessageDelivery) (interface{}, error) {
     s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery)
     return nil, nil
}

En ajoutant la valeur de retour d'erreur et en assurant une bonne correspondance avec la signature asl.MessageHandler, le code doit s'exécuter sans rencontrer l'erreur susmentionnée.

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!

Déclaration:
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