最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、介紹

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

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

1.1 定義 匿名函數(shù)

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

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

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

匿名函數(shù)因?yàn)闆](méi)有函數(shù)名,所以沒(méi)辦法像普通函數(shù)那樣調(diào)用,所以匿名函數(shù)需要保存到某個(gè)變量或者作為立即執(zhí)行函數(shù):

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

1.3 匿名函數(shù)的兩種場(chǎng)景(回調(diào)函數(shù),閉包)

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

func callFunc(base int, f func(int, int) int) {
    num := f(base, 5) // 減少或者加上5
    fmt.Printf("base %d 經(jīng)過(guò)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)過(guò)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ù)引用了外部變量,所以同時(shí)也是個(gè)閉包,變量 f 指向的閉包引用了局部變量 i 和 j,i 在閉包內(nèi)部定義,其值被隔離,不能從外部修改,而變量 j 在閉包外部定義,所以可以從外部修改,閉包持有的只是其引用。

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

相關(guān)文章

  • 創(chuàng)建第一個(gè)Go語(yǔ)言程序Hello,Go!

    創(chuàng)建第一個(gè)Go語(yǔ)言程序Hello,Go!

    這篇文章主要介紹了創(chuàng)建第一個(gè)Go語(yǔ)言程序Hello,Go!本文詳細(xì)的給出項(xiàng)目創(chuàng)建、代碼編寫(xiě)的過(guò)程,同時(shí)講解了GOPATH、Go install等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • Golang Map value不可尋址使用指針類型代替示例詳解

    Golang Map value不可尋址使用指針類型代替示例詳解

    這篇文章主要為大家介紹了Golang Map value不可尋址使用指針類型代替示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 解決golang sync.Wait()不執(zhí)行的問(wèn)題

    解決golang sync.Wait()不執(zhí)行的問(wèn)題

    這篇文章主要介紹了解決golang sync.Wait()不執(zhí)行的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • golang中字符串和數(shù)字轉(zhuǎn)換方法

    golang中字符串和數(shù)字轉(zhuǎn)換方法

    在Golang中,可以使用strconv包中的Itoa()和Atoi()函數(shù)進(jìn)行字符串與數(shù)字之間的轉(zhuǎn)換,Itoa()用于將數(shù)字轉(zhuǎn)換為字符串,Atoi()則用于將字符串轉(zhuǎn)換回?cái)?shù)字,本文介紹golang中字符串和數(shù)字轉(zhuǎn)換方法,感興趣的朋友一起看看吧
    2024-09-09
  • Go語(yǔ)言利用Unmarshal解析json字符串的實(shí)現(xiàn)

    Go語(yǔ)言利用Unmarshal解析json字符串的實(shí)現(xiàn)

    本文主要介紹了Go語(yǔ)言利用Unmarshal解析json字符串的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • go語(yǔ)言中sort包的實(shí)現(xiàn)方法與應(yīng)用詳解

    go語(yǔ)言中sort包的實(shí)現(xiàn)方法與應(yīng)用詳解

    golang中也實(shí)現(xiàn)了排序算法的包sort包,所以下面這篇文章主要給大家介紹了關(guān)于go語(yǔ)言中sort包的實(shí)現(xiàn)方法與應(yīng)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Golang編程實(shí)現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法

    Golang編程實(shí)現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法

    這篇文章主要介紹了Golang編程實(shí)現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法,涉及Go語(yǔ)言字符串遍歷與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • go mutex互斥鎖使用Lock和Unlock方法占有釋放資源

    go mutex互斥鎖使用Lock和Unlock方法占有釋放資源

    Go號(hào)稱是為了高并發(fā)而生的,在高并發(fā)場(chǎng)景下,勢(shì)必會(huì)涉及到對(duì)公共資源的競(jìng)爭(zhēng),當(dāng)對(duì)應(yīng)場(chǎng)景發(fā)生時(shí),我們經(jīng)常會(huì)使用 mutex 的 Lock() 和 Unlock() 方法來(lái)占有或釋放資源,雖然調(diào)用簡(jiǎn)單,但 mutex 的內(nèi)部卻涉及挺多的,本文來(lái)好好研究一下
    2023-09-09
  • GO 之運(yùn)算符號(hào)的具體使用

    GO 之運(yùn)算符號(hào)的具體使用

    這篇文章主要介紹了GO運(yùn)算符號(hào)的具體使用,包括算術(shù)、一元、關(guān)系、邏輯、位運(yùn)算及賦值運(yùn)算符,感興趣的可以了解一下
    2025-06-06
  • golang中可觸發(fā)panic的幾種情況匯總

    golang中可觸發(fā)panic的幾種情況匯總

    在Go語(yǔ)言中,panic是一種運(yùn)行時(shí)錯(cuò)誤處理機(jī)制,當(dāng)程序遇到無(wú)法恢復(fù)的嚴(yán)重錯(cuò)誤時(shí)會(huì)觸發(fā)panic,本文就來(lái)詳細(xì)的介紹一下golang中可觸發(fā)panic的幾種情況,感興趣的可以了解一下
    2025-11-11

最新評(píng)論

绥江县| 安庆市| 边坝县| 赤壁市| 怀集县| 黄平县| 白沙| 名山县| 重庆市| 乌什县| 清原| 长武县| 历史| 罗山县| 田阳县| 成都市| 白银市| 织金县| 黄平县| 肃南| 黑水县| 边坝县| 新巴尔虎左旗| 微山县| 嘉禾县| 大埔县| 灵台县| 齐河县| 莱阳市| 大余县| 慈溪市| 锦州市| 元江| 建始县| 同仁县| 荥阳市| 永宁县| 济阳县| 安康市| 阿合奇县| 百色市|