「不能使用函數(類型func())作為參數類型」
此Go 程式碼旨在利用各種方法來示範鍊式服務消費訊息、發布訊息、回覆訊息等功能。程式碼使用asl函式庫來處理訊息操作。
嘗試執行程式碼時,遇到錯誤訊息,指示UpperCaseHandler和RepeatHandler函數不能用作ConsumeFunc中asl.MessageHandler類型的參數分別是 UpperCaser 和 Repeater 服務的方法。
要解決此問題,需要確保函數簽章與預期格式相符。 asl.MessageHandler 類型需要一個接受 Busboy.MessageDelivery 作為參數並傳回一個 interface{} 和一個錯誤的函數。
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 程式碼會產生「無法使用函數(類型 func())作為參數類型」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!