1 回答

TA貢獻1735條經驗 獲得超5個贊
問:對于 func adder() func(int) int { 分別是 [參數列表] 和 [return_types] 是什么?
答:在這里,我們有一個名為函數的函數,它不帶任何參數,該函數返回一個函數,該函數采用一個整數并返回一個整數。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
}
}
看看正在返回的函數,這里已經有一個命名參數(),所以我們不需要在 中再次提到它,因為如果我們做這樣的事情,這里沒有用。func(x int) intxfunc adder() func(int) intfunc adder() func(x int) intx
因此,如果返回的函數具有 2 個參數(其中一個額外的參數是類型),則它類似于以下代碼:string
func adder() func(int, string) int {
sum := 0
return func(x int, y string) int {
sum += x
fmt.Println(y)
return sum
}
}
請注意,我們在 處添加了一個類型,這是因為我們返回的函數采用類型。stringfunc adder() func(int, string) int {string
問:對于 pos, neg := adder(), adder(), 這是否意味著將函數 adder 分配給 pos 和 neg,為什么不應該是 pos, neg := adder, adder?
答:看,當我們賦值給()時,就變成了一個新的函數,因為返回了一個函數,這樣我們就可以做到了。posadder()pos := adder()posadder()func(int) intpos(i)
同樣適用于 .neg
- 1 回答
- 0 關注
- 67 瀏覽
添加回答
舉報