1 回答
TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊
問:對于 func adder() func(int) int { 分別是 [參數(shù)列表] 和 [return_types] 是什么?
答:在這里,我們有一個(gè)名為函數(shù)的函數(shù),它不帶任何參數(shù),該函數(shù)返回一個(gè)函數(shù),該函數(shù)采用一個(gè)整數(shù)并返回一個(gè)整數(shù)。adder()func(int) int
問:對于與 Question.1 相同的行,為什么有 (int),而不是類似 (x int) 的東西?
答:這是功能adder()
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
看看正在返回的函數(shù),這里已經(jīng)有一個(gè)命名參數(shù)(),所以我們不需要在 中再次提到它,因?yàn)槿绻覀冏鲞@樣的事情,這里沒有用。func(x int) intxfunc adder() func(int) intfunc adder() func(x int) intx
因此,如果返回的函數(shù)具有 2 個(gè)參數(shù)(其中一個(gè)額外的參數(shù)是類型),則它類似于以下代碼:string
func adder() func(int, string) int {
sum := 0
return func(x int, y string) int {
sum += x
fmt.Println(y)
return sum
}
}
請注意,我們在 處添加了一個(gè)類型,這是因?yàn)槲覀兎祷氐暮瘮?shù)采用類型。stringfunc adder() func(int, string) int {string
問:對于 pos, neg := adder(), adder(), 這是否意味著將函數(shù) adder 分配給 pos 和 neg,為什么不應(yīng)該是 pos, neg := adder, adder?
答:看,當(dāng)我們賦值給()時(shí),就變成了一個(gè)新的函數(shù),因?yàn)榉祷亓艘粋€(gè)函數(shù),這樣我們就可以做到了。posadder()pos := adder()posadder()func(int) intpos(i)
同樣適用于 .neg
- 1 回答
- 0 關(guān)注
- 77 瀏覽
添加回答
舉報(bào)
