首頁 >後端開發 >Golang >為什麼我的 Go 程式碼會產生'無法使用函數作為參數類型”以及如何修復它?

為什麼我的 Go 程式碼會產生'無法使用函數作為參數類型”以及如何修復它?

DDD
DDD原創
2024-12-14 07:48:13355瀏覽

Why Does My Go Code Produce

錯誤「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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn