Maison >développement back-end >Golang >Pourquoi My Go Code Produce « ne peut-il pas utiliser la fonction comme argument de type » et comment puis-je y remédier ?

Pourquoi My Go Code Produce « ne peut-il pas utiliser la fonction comme argument de type » et comment puis-je y remédier ?

DDD
DDDoriginal
2024-12-14 07:48:13358parcourir

Why Does My Go Code Produce

Erreur "Impossible d'utiliser la fonction comme type d'argument"

Dans le code Go fourni, vous essayez de transmettre une fonction comme argument à une autre fonction, mais vous rencontrez l'erreur « impossible d'utiliser la fonction (type func()) comme argument de type ». Cette erreur indique que le type de la fonction que vous essayez de transmettre ne correspond pas au type attendu de l'argument.

Pour résoudre ce problème, assurez-vous que la signature de la fonction que vous transmettez correspond au type attendu de l'argument. l'argumentation. Dans votre cas, vous transmettez des fonctions qui prennent une structure MessageDelivery comme argument et renvoient une valeur et une erreur. Cependant, le type attendu de l'argument attend une fonction qui prend une structure MessageDelivery comme argument et renvoie directement une interface{}.

Pour rectifier cela, modifiez vos fonctions comme suit :

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 modifiant vos fonctions pour renvoyer directement une interface{}, elles correspondront désormais au type d'argument attendu et l'erreur devrait être résolue.

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