Maison >développement back-end >Golang >Pourquoi Golang renvoie-t-il une erreur « Impossible d'utiliser la fonction (type func()) comme type d'argument » lors du passage de fonctions ?
Dans Golang, lors du passage d'une fonction comme argument à une autre fonction, la signature de type de la fonction transmise doit correspondre à la signature attendue de la fonction réceptrice. Dans votre code, vous essayez de passer les fonctions suivantes comme arguments :
UpperCaseHandler RepeatHandler
Cependant, la signature de type attendue pour la fonction de gestionnaire de messages est :
type MessageHandler func(MessageDelivery) (interface{}, error)
Comme vous pouvez le voir , la fonction de gestionnaire de messages attendue prend une structure MessageDelivery comme argument et renvoie une interface{} et une erreur. Vos fonctions, cependant, sont définies comme suit :
func UpperCaseHandler(md asl.MessageDelivery) { s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery) } func RepeatHandler(md asl.MessageDelivery) { s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery) }
Notez qu'il manque les valeurs de retour (interface{} et erreur) à vos fonctions. Pour résoudre ce problème, vous devez modifier vos fonctions pour qu'elles correspondent à la signature attendue. Voici comment procéder :
func UpperCaseHandler(md asl.MessageDelivery) (interface{}, error} { s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery) return nil, nil } func RepeatHandler(md asl.MessageDelivery) (interface{}, error} { s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery) return nil, nil }
En ajoutant les valeurs de retour manquantes, vos fonctions correspondront désormais à la signature attendue, et vous pourrez les passer en arguments aux autres fonctions sans rencontrer le " ne peut pas utiliser la fonction (tapez func()) comme erreur de type dans l'argument".
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!