関数を引数の型として使用できない: トラブルシューティング
このエラーは、関数を引数として別の関数に渡そうとすると発生しますが、関数のシグネチャが予期された型と一致しません。特に Go プログラミングの場合、この問題は、特定の構造化パラメータを受け取り、別の関数の要件としてインターフェイスとエラーを返す関数を渡そうとしたときに発生します。
問題の理解
エラー メッセージ「関数 (type func()) を引数の型として使用できません」は、渡そうとしている関数が、関数で必要な型と一致しないことを意味します。 口論。この場合、引数には、特定の関数シグネチャを持つ MessageHandler インターフェイスの実装が必要です。
問題の解決
このエラーを解決するには、次のことを確認する必要があります。関数が MessageHandler インターフェイスの予期される署名に準拠していること:
type MessageHandler func(MessageDelivery) (interface{}, error)
これは、関数が必須:
2 つの値を持つタプルを返します:
例:
必要な署名に合わせて関数を変更します:
func UpperCaseHandler(md MessageDelivery) (interface{}, error) { s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery) return nil, nil } func RepeatHandler(md MessageDelivery) (interface{}, error) { s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery) return nil, nil }
現在、これらの関数は MessageHandler インターフェイスと互換性があり、ConsumerFunc() に引数として渡すことができます。メソッド。
以上がGo で「関数を引数の入力として使用できません」というエラーがスローされるのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。