亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

編寫將匿名函數作為參數傳遞的高階函數

編寫將匿名函數作為參數傳遞的高階函數

Go
智慧大石 2023-07-17 17:49:28
以下是重現此代碼的方法:https ://play.golang.org/p/ostuT1QFV4C **我正在嘗試編寫一個函數,該函數允許我傳遞用于獲取數據并將其轉換為字符串的任何方法。這是為了更好地理解如何在 Go 中使用高階函數。func getConfigsFunc(getData func() ([]byte, error)) string {    b, err := getData()    if err != nil {        fmt.Print(err)    }    str := string(b) // convert content to a 'string'    return str}我嘗試以幾種不同的方式使用此功能,但沒有一個能正常工作。例如,在我可能使用它的一種情況下,我可以構造一個匿名函數,該函數封閉一個變量并返回一個不接受參數并返回的函數([]byte, error)。從理論上講,這種方法將允許我包裝任何獲取數據的代碼,只要我可以返回一個不接受參數并返回的匿名方法([]byte, error)。然而,我的嘗試卻失敗了。首先,我嘗試了這個:getNfsConfigsFunc := func() ([]byte, error) {        return ioutil.ReadFile("nfsConfigs.json")    }()但是,我得到:賦值不匹配:1 個變量,但 func 文字返回 2 個值(作為參考,ioutil.ReadFile(..)返回([]byte, error)。)我假設(可能是錯誤的)我的錯誤意味著匿名函數立即執行(就像Javascript中的IIFE),所以我嘗試將內部部分包裝在函數中(嘗試強制匿名函數返回一個函數,而不是2 個值),如下所示:getNfsConfigsFunc := func() ([]byte, error) {        return nil, func() ([]byte, error) {            return ioutil.ReadFile("nfsConfigs.json")        }    }()但是 IDE 強迫我在匿名函數的一部分中添加“nil”,這似乎違反了我的意圖(除非我誤解了某些內容)。無論如何,它給了我這個錯誤:./main.go:247:20: 賦值不匹配:1 個變量,但 func 文字返回 2 個值 ./main.go:248:15:不能使用 func 文字 (type func() ([]byte, error)) 作為類型返回參數錯誤: func() ([]byte, error) 未實現 error (缺少 Error 方法)我可以用 Go 做我想做的事情嗎?為了完整起見,內容nfsConfigs.json如下所示:{    "nfsURLBase" : "http://example.url.path.com/",    "nfsFsBase" : "/data/nfs/path/to/files"}
查看完整描述

1 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

這東西


getNfsConfigsFunc := func() ([]byte, error) {

        return ioutil.ReadFile("nfsConfigs.json")

}()

不創建匿名函數。由于訓練,它調用()匿名函數。


它應該只是:


getNfsConfigsFunc := func() ([]byte, error) {

        return ioutil.ReadFile("nfsConfigs.json")

}


查看完整回答
反對 回復 2023-07-17
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號