Invocation de fonction de service : incompatibilité d'arguments
Dans ce code, vous êtes confronté à un problème où les fonctions UpperCaseHandler et RepeatHandler ne sont pas compatibles avec les signatures de fonction attendues pour asl.MessageHandler.
cannot use UpperCaseHandler (type func(asl.MessageDelivery)) as type asl.MessageHandler in assignment
cannot use RepeatHandler (type func(asl.MessageDelivery)) as type asl.MessageHandler in argument to Repeater.ConsumeFunc
Comprendre les signatures de fonction
Le type asl.MessageHandler attend des fonctions avec la signature suivante :
type MessageHandler func(MessageDelivery) (interface{}, error)
Cela signifie que ces fonctions doivent prendre une seule structure MessageDelivery comme argument et renvoyer à la fois une valeur de résultat (de n'importe quel type) et une erreur (s'il y en a une).
Correction des signatures de fonction
Pour résoudre ce problème, modifiez vos fonctions UpperCaseHandler et RepeatHandler pour qu'elles correspondent à la signature attendue :
func UpperCaseHandler(md asl.MessageDelivery) (interface{}, error) { s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery) // Modified to return nil, nil as the MessageDelivery struct is handled by the ASL library return nil, nil } func RepeatHandler(md asl.MessageDelivery) (interface{}, error) { s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery) // Modified to return nil, nil as the MessageDelivery struct is handled by the ASL library return nil, nil }
Avec ces changements, vos fonctions correspondront désormais à la signature attendue et le code devrait s'exécuter avec succès.
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!