亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網
    最全最豐富的資訊網站

    go語言的匿名函數定義方法是什么

    go語言的匿名函數定義方法是“func(參數列表)(返回參數列表){函數體}”,其實匿名函數的定義就是沒有名字的普通函數定義。匿名函數完全可以當作一個類型,可以直接賦值,可以賦值給變量,可以當作實參或者返回值進行使用,當然也可以直接進行調用。

    go語言的匿名函數定義方法是什么

    本教程操作環(huán)境:windows7系統、GO 1.18版本、Dell G3電腦。

    Go語言支持匿名函數,即在需要使用函數時再定義函數,匿名函數沒有函數名只有函數體,函數可以作為一種類型被賦值給函數類型的變量,匿名函數也往往以變量方式傳遞,這與C語言的回調函數比較類似,不同的是,Go語言支持隨時在代碼里定義匿名函數。

    匿名函數是指不需要定義函數名的一種函數實現方式,由一個不帶函數名的函數聲明和函數體組成,下面來介紹一下匿名函數的定義方法。

    定義一個匿名函數

    匿名函數的定義格式如下:

    func(參數列表)(返回參數列表){     函數體 }
    登錄后復制

    匿名函數的定義就是沒有名字的普通函數定義。

    基本使用方法

    匿名函數完全可以當作一個類型,可以直接賦值,可以賦值給變量,可以當作實參或者返回值進行使用,當然也可以直接進行調用

    1) 在定義時調用匿名函數

    匿名函數可以在聲明后調用,例如:

    func(data int) {     fmt.Println("hello", data) }(100)
    登錄后復制

    注意第3行}后的(100),表示對匿名函數進行調用,傳遞參數為 100。

    2) 將匿名函數賦值給變量

    匿名函數可以被賦值,例如:

    // 將匿名函數體保存到f()中 f := func(data int) {     fmt.Println("hello", data) } // 使用f()調用 f(100)
    登錄后復制

    匿名函數的用途非常廣泛,它本身就是一種值,可以方便地保存在各種容器中實現回調函數和操作封裝。

    匿名函數的使用地方

    回調函數

    為啥要用回調函數呢,我們分析一下,A是主函數,B作為參數傳遞給主函數,我們可以通過上面的例子看到,我們在定義主函數的時候,只定義了函數B的參數以及返回值類型,那么只要函數B滿足我們定義的類型,函數A都可以處理,所以說使用回調函數可以讓我們主函數的通用性更強。在通俗點來說,主函數提供了一個接口,只要符合這個接口規(guī)則的函數都能用。

    type Callback func(a, b int) int  // 提供接口,外部隨便怎么搞,只要符合規(guī)則就行 func api(x,y int, callback Callback) int {     return callback(x, y) }  // 回調函數,只要滿足傳入參數類型為int // 并且返回值類型也是int就都可以 func add(a, b int) int {     return a + b }
    登錄后復制

    閉包

    閉包是啥,閉包是由函數和與其相關的引用環(huán)境組合而成的實體。

    func add() func(int) int {     var b int     return func(a int) int {         b = b + a         return b     } }  var f = add()
    登錄后復制

    這里f就是一個閉包,f保存了對b的引用,簡單來說f里面有個指針指向b的地址,所以說我們可以得到以下結果

    fmt.Println(f(1)) // 由于b初始化為0,所以輸出1 fmt.Println(f(2)) // 由于上一行代碼已經修改了b的值,所以輸出4
    登錄后復制

    所以說閉包就是相當于在我們函數內部使用匿名函數處理好有關變量的所有事情

    贊(0)
    分享到: 更多 (0)
    網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號