002_解析go語言中的回呼函數

來源:互聯網
上載者:User

標籤:網上   block   cal   package   class   pos   來源   ack   就是   

回呼函數是一種特殊的函數寫法,在很多情境中發揮廣泛的作用。但是對於初學者來說,回呼函數是比較頭疼的一個東西,不太好懂,筆者研究了一番,以網上的一個例子詳細說明一下首先看一個程式碼範例(來源於網上)
package mainimport "fmt"type Callback func(x, y int) intfunc main() {    x, y := 1, 2    fmt.Println(test(x, y, add))}//實現回調func test(x, y int, callback Callback) int {    return callback(x, y)}func add(x, y int) int {    return x + y}
此代碼運行結果如下

3

  • 在上述例子中,函數test接收3個參數,前兩個參數是int類型,第三個參數為函數類型,而傳回值,為int,這個int的結果,其實是callback(x,y)的運行結果,但是callback(x,y)是在其它地方實現的,是被函數add(x,y)實現的。這就是回調
  • 邏輯如下:首先程式運行,要列印test(x,y,add)的結果,函數test接收了三個參數,第三個參數傳入的是函數add,返回的是callback(x,y),其實返回的就是add(x,y)。而add(x,y),被另一個地方定義好了,返回的是x+y的值。所以最終,函數main的結果是列印出了x+y,也就是3
總結一下,Go是支援函數回調的,我們可以把函數A的名稱作為參數傳遞給另外一個函數B,然後在別的地方實現這個函數A,這樣就實現了函數回調

002_解析go語言中的回呼函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.