2 回答
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
來自規(guī)范:函數(shù)文字:
FunctionLit?=?"func"?Signature?FunctionBody?.
函數(shù)文字必須包含func關(guān)鍵字和Signature。語法不允許使用函數(shù)類型。
函數(shù)聲明也是如此:
FunctionDecl?=?"func"?FunctionName?Signature?[?FunctionBody?]?.
不允許使用函數(shù)類型(而不是簽名)。
所以不,你想要的東西是不可能的。其原因是因?yàn)楹灻ê瘮?shù)類型)不包含參數(shù)名稱(僅包含它們的順序和類型),但是當(dāng)您實(shí)際“創(chuàng)建”函數(shù)值時(shí),您需要一種引用它們的方法,并且只有函數(shù)類型,沒有參數(shù)名稱。
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
不,但在 golang 中你可以定義帶有名稱的方法并使用它們。
舉個(gè)例子。有時(shí),在文件的頂部甚至在整個(gè)包中,有一種定義錯(cuò)誤的常見方法,如下所示:
ErrFileNotFound := func(file string) error { return errors.New(fmt.Sprintf("file not found %v", file)) }
然后這個(gè)函數(shù)可以在文件中多次使用,例如
file, err := os.Open(filenameRequestedToOpen) // For read access.
if err != nil {
log.Fatal(ErrFileNotFound(filenameRequestedToOpen))
}
或參見https://play.golang.org/p/CvBGGc3YeX4
- 2 回答
- 0 關(guān)注
- 199 瀏覽
添加回答
舉報(bào)
