首頁 > 後端開發 > Golang > 為什麼當使用 asl 庫連結服務時,我的 Go 程式碼會產生「無法使用函數(類型 func())作為參數類型」錯誤?

為什麼當使用 asl 庫連結服務時,我的 Go 程式碼會產生「無法使用函數(類型 func())作為參數類型」錯誤?

Susan Sarandon
發布: 2024-12-17 09:01:25
原創
545 人瀏覽過

Why Does My Go Code Produce a

「不能使用函數(類型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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板