1. 程式人生 > >002_解析go語言中的回調函數

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

println 函數類 () pos span 示例 lB 解析 作用

回調函數是一種特殊的函數寫法,在很多場景中發揮廣泛的作用。但是對於初學者來說,回調函數是比較頭疼的一個東西,不太好懂,筆者研究了一番,以網上的一個例子詳細說明一下

首先看一個代碼示例(來源於網上)

package main

import "fmt"

type Callback func(x, y int) int

func 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語言中的回調函數