ホームページ >バックエンド開発 >Golang >asl ライブラリでサービスをチェーンするときに Go コードで「関数 (type func()) を引数の型として使用できません」というエラーが発生するのはなぜですか?

asl ライブラリでサービスをチェーンするときに Go コードで「関数 (type func()) を引数の型として使用できません」というエラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-17 09:01:25540ブラウズ

Why Does My Go Code Produce a

「関数 (type func()) を引数の型として使用できません」

この Go コードは、さまざまなサービスを利用してチェーン サービスを実証することを目的としています。メッセージの消費、メッセージの公開、メッセージへの返信などの機能。このコードは、メッセージング操作の処理に asl ライブラリを使用しています。

コードを実行しようとすると、UpperCaseHandler 関数とRepeatHandler 関数を ConsumeFunc の asl.MessageHandler 型の引数として使用できないことを示すエラー メッセージが表示されます。

この問題を解決するには、関数のシグネチャが期待されるものと一致していることを確認する必要があります。形式。 asl.MessageHandler タイプは、busboy.Messagedelivery を引数として受け取り、インターフェースとエラーを返す関数を予期します。

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

コード内の UpperCaseHandler 関数とRepeatHandler 関数は、この予期された関数に準拠していません。サイン。エラー戻り値がありません。これを修正するには、次のように関数を変更します。

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
}

エラー戻り値を追加し、asl.MessageHandler シグネチャと適切に一致するようにすることで、前述のエラーが発生することなくコードが実行されるはずです。

以上がasl ライブラリでサービスをチェーンするときに Go コードで「関数 (type func()) を引数の型として使用できません」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。