第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

func 關(guān)鍵字后的兩個函數(shù)名稱 - 它是什么?

func 關(guān)鍵字后的兩個函數(shù)名稱 - 它是什么?

Go
胡子哥哥 2023-05-22 17:04:53
最后一個函數(shù)怎么理解?為什么我們在func聲明后使用不同的函數(shù)名稱?如何使用這些功能?像main函數(shù)中顯示的那樣使用它是錯誤的。package mainimport (    "fmt")func main() {    fmt.Println(incrementer()) //error}func incrementer() func() int { //what is it?!    i := 0    return func() int {        i++        return i    }}
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗 獲得超10個贊

這只是意味著該函數(shù)正在返回一個不帶參數(shù)并返回整數(shù)的函數(shù)。那就是


... func() int 

你簽名的一部分在說。


您收到的錯誤是因為您 fmt.Println 無法打印函數(shù)。為了證明這一點,你可以看到如果你打電話,你會得到同樣的錯誤,


func main() {

    fmt.Println(foo)

}


func foo() int {

  return 1

}

如果你這樣調(diào)用你的函數(shù),可能會更清楚地看到發(fā)生了什么。


func main() {

    myIncrementer := incrementer()

    fmt.Println(myIncrementer()) // Prints 1

}

你在哪里創(chuàng)建增量器,它是一個函數(shù),然后調(diào)用返回 1 的函數(shù)函數(shù)。


查看完整回答
反對 回復(fù) 2023-05-22
?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗 獲得超4個贊

簡單地說,由于incrementer()返回一個函數(shù),它返回的函數(shù)也必須被調(diào)用。你可以這樣做:

functionFoo := incrementer()
fmt.Println(functionFoo())

或者這種簡寫的方式:

fmt.Println(incrementer()())

這實現(xiàn)了同樣的事情,你只是立即執(zhí)行返回的函數(shù)incrementer()。


查看完整回答
反對 回復(fù) 2023-05-22
  • 2 回答
  • 0 關(guān)注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號