錯誤「cannot use function as type in argument」
在提供的Go 程式碼中,您嘗試將函數作為參數傳遞到另一個函數,但您遇到錯誤「無法使用函數(類型func())作為參數中的類型。
要解決此問題,請確保您傳遞的函數的簽名與預期的參數類型相符的論點。在您的情況下,您傳遞的函數採用 MessageDelivery 結構作為參數並傳回值和錯誤。但是,參數的預期類型需要一個採用 MessageDelivery 結構體作為參數並直接傳回 interface{} 的函數。
要修正此問題,請修改您的函數,如下所示:
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 }
透過修改您的函數以直接傳回interface{},它們現在將匹配參數的預期類型,並且錯誤應該得到解決。
以上是為什麼我的 Go 程式碼會產生'無法使用函數作為參數類型”以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!