欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語法入門匿名函數(shù)定義及使用示例詳解

 更新時間:2023年09月06日 10:46:03   作者:海生  
這篇文章主要為大家介紹了go語法入門匿名函數(shù)定義及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、介紹

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

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

1.1 定義 匿名函數(shù)

fun(參數(shù))返回{
    函數(shù)體
}

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

1.2 定義 匿名函數(shù)的兩種方式

匿名函數(shù)因為沒有函數(shù)名,所以沒辦法像普通函數(shù)那樣調用,所以匿名函數(shù)需要保存到某個變量或者作為立即執(zhí)行函數(shù):

  • 保存到某個變量
  • 立即執(zhí)行函數(shù)
package main
import "fmt"
func main()  {
    // 定義匿名函數(shù)方式一
    add := func (x, y int)  {
        fmt.Println(x + y)
    }
    add(1, 2)  // 通過變量調用匿名函數(shù)
    // 定義匿名函數(shù)方式二
    func (x, y int)  {
        fmt.Println(x - y)
    }(20, 5)  //自執(zhí)行函數(shù):匿名函數(shù)定義完加()直接執(zhí)行
}

1.3 匿名函數(shù)的兩種場景(回調函數(shù),閉包)

1.3.1 回調函數(shù)

func callFunc(base int, f func(int, int) int) {
    num := f(base, 5) // 減少或者加上5
    fmt.Printf("base %d 經(jīng)過f處理后值是:%d \n", base, num)
}
func TestCallFunc(t *testing.T) {
    addNum := func(base, num int) int {
        return base + num
    }
    callFunc(100, addNum)
}

輸出:

=== RUN   TestCallFunc
base 100 經(jīng)過f處理后值是:105 
--- PASS: TestCallFunc (0.00s)

1.3.2 閉包

func TestClosure(t *testing.T) {
    var j int = 1
    f := func() {
        var i int = 1
        fmt.Printf("i, j: %d, %d\n", i, j)
    }
    f()
    j += 2
    f()
}

輸出:

=== RUN   TestClosure
i, j: 1, 1
i, j: 1, 3
--- PASS: TestClosure (0.00s)

在上面的示例中,匿名函數(shù)引用了外部變量,所以同時也是個閉包,變量 f 指向的閉包引用了局部變量 i 和 j,i 在閉包內部定義,其值被隔離,不能從外部修改,而變量 j 在閉包外部定義,所以可以從外部修改,閉包持有的只是其引用。

以上就是go語法入門匿名函數(shù)定義及使用示例詳解的詳細內容,更多關于go語法入門匿名函數(shù)的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解Go中Set的實現(xiàn)方式

    詳解Go中Set的實現(xiàn)方式

    這篇文章主要介紹了詳解Go中Set的實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Go語言基礎知識點介紹

    Go語言基礎知識點介紹

    在本篇文章里小編給大家整理的是一篇關于Go語言基礎知識點介紹內容,有興趣的朋友們可以跟著學習參考下。
    2021-07-07
  • 詳解Go語言中的Slice鏈式操作

    詳解Go語言中的Slice鏈式操作

    這篇文章主要為大家詳細介紹了Go語言中的Slice鏈式操作的相關知識,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2023-04-04
  • Golang如何實現(xiàn)任意進制轉換的方法示例

    Golang如何實現(xiàn)任意進制轉換的方法示例

    進制轉換是人們利用符號來計數(shù)的方法,進制轉換由一組數(shù)碼符號和兩個基本因素“基數(shù)”與“位權”構成,這篇文章主要給大家介紹了關于Golang如何實現(xiàn)10進制轉換62進制的方法,文中給出了詳細的示例代碼供大家參考學習學習,下面隨著小編來一起學習學習吧。
    2017-09-09
  • Go Gin實現(xiàn)文件上傳下載的示例代碼

    Go Gin實現(xiàn)文件上傳下載的示例代碼

    這篇文章主要介紹了Go Gin實現(xiàn)文件上傳下載的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Golang算法之田忌賽馬問題實現(xiàn)方法分析

    Golang算法之田忌賽馬問題實現(xiàn)方法分析

    這篇文章主要介紹了Golang算法之田忌賽馬問題實現(xiàn)方法,結合具體實例形式分析了基于Go語言的田忌賽馬問題原理與算法實現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02
  • Windows10系統(tǒng)下安裝Go環(huán)境詳細步驟

    Windows10系統(tǒng)下安裝Go環(huán)境詳細步驟

    Go語言是谷歌推出的一款全新的編程語言,可以在不損失應用程序性能的情況下極大的降低代碼的復雜性,這篇文章主要給大家介紹了關于Windows10系統(tǒng)下安裝Go環(huán)境的詳細步驟,需要的朋友可以參考下
    2023-11-11
  • golang coroutine 的等待與死鎖用法

    golang coroutine 的等待與死鎖用法

    這篇文章主要介紹了golang coroutine 的等待與死鎖用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go語言如何生成PDF文件實例探究

    Go語言如何生成PDF文件實例探究

    這篇文章主要為大家介紹了Go語言生成PDF文件的實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 詳解Go語言中切片的長度與容量的區(qū)別

    詳解Go語言中切片的長度與容量的區(qū)別

    切片可以看成是數(shù)組的引用,切片的長度是它所包含的元素個數(shù)。切片的容量是從它的第一個元素到其底層數(shù)組元素末尾的個數(shù)。本文將通過示例詳細講講Go語言中切片的長度與容量的區(qū)別,需要的可以參考一下
    2022-11-11

最新評論