久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      go語言的匿名函數(shù)定義方法是什么

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

      go語言的匿名函數(shù)定義方法是什么

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

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

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

      定義一個匿名函數(shù)

      匿名函數(shù)的定義格式如下:

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

      匿名函數(shù)的定義就是沒有名字的普通函數(shù)定義。

      基本使用方法

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

      1) 在定義時調(diào)用匿名函數(shù)

      匿名函數(shù)可以在聲明后調(diào)用,例如:

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

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

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

      匿名函數(shù)可以被賦值,例如:

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

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

      匿名函數(shù)的使用地方

      回調(diào)函數(shù)

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

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

      閉包

      閉包是啥,閉包是由函數(shù)和與其相關(guān)的引用環(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就是一個閉包,f保存了對b的引用,簡單來說f里面有個指針指向b的地址,所以說我們可以得到以下結(jié)果

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

      所以說閉包就是相當于在我們函數(shù)內(nèi)部使用匿名函數(shù)處理好有關(guān)變量的所有事情

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