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

簡(jiǎn)單了解Go語(yǔ)言中函數(shù)作為值以及函數(shù)閉包的使用

 更新時(shí)間:2015年10月30日 16:15:29   投稿:goldensun  
這篇文章主要介紹了簡(jiǎn)單了解Go語(yǔ)言中函數(shù)作為值以及函數(shù)閉包的使用,是golang入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

函數(shù)作為值

Go編程語(yǔ)言提供靈活性,以動(dòng)態(tài)創(chuàng)建函數(shù),并使用它們的值。在下面的例子中,我們已經(jīng)與初始化函數(shù)定義的變量。此函數(shù)變量的目?jī)H僅是為使用內(nèi)置的Math.sqrt()函數(shù)。下面是一個(gè)例子:

復(fù)制代碼 代碼如下:

package main

import (
   "fmt"
   "math"
)

func main(){
   /* declare a function variable */
   getSquareRoot := func(x float64) float64 {
      return math.Sqrt(x)
   }

   /* use the function */
   fmt.Println(getSquareRoot(9))

}


當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:

3

函數(shù)閉包
Go編程語(yǔ)言支持匿名函數(shù)其可以作為函數(shù)閉包。當(dāng)我們要定義一個(gè)函數(shù)內(nèi)聯(lián)不傳遞任何名稱,它可以使用匿名函數(shù)。在我們的例子中,我們創(chuàng)建了一個(gè)函數(shù)getSequence()將返回另一個(gè)函數(shù)。該函數(shù)的目的是關(guān)閉了上層函數(shù)的變量i 形成一個(gè)閉合。下面是一個(gè)例子:

復(fù)制代碼 代碼如下:

package main

import "fmt"

func getSequence() func() int {
   i:=0
   return func() int {
      i+=1
   return i 
   }
}

func main(){
   /* nextNumber is now a function with i as 0 */
   nextNumber := getSequence() 

   /* invoke nextNumber to increase i by 1 and return the same */
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
  
   /* create a new sequence and see the result, i is 0 again*/
   nextNumber1 := getSequence() 
   fmt.Println(nextNumber1())
   fmt.Println(nextNumber1())
}


當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:

1
2
3
1
2

相關(guān)文章

  • 詳解Go如何基于現(xiàn)有的context創(chuàng)建新的context

    詳解Go如何基于現(xiàn)有的context創(chuàng)建新的context

    在?Golang?中,context?包提供了創(chuàng)建和管理上下文的功能,那么在GO語(yǔ)言中如何基于現(xiàn)有的context創(chuàng)建新的context,下面小編就來(lái)和大家詳細(xì)聊聊
    2024-01-01
  • Go實(shí)現(xiàn)mongodb增刪改查工具類的代碼示例

    Go實(shí)現(xiàn)mongodb增刪改查工具類的代碼示例

    這篇文章主要給大家介紹了關(guān)于Go實(shí)現(xiàn)mongodb增刪改查工具類的相關(guān)資料,MongoDB是一個(gè)NoSQL數(shù)據(jù)庫(kù),它提供了靈活的文檔存儲(chǔ)模型以及強(qiáng)大的查詢和操作功能,需要的朋友可以參考下
    2023-10-10
  • GoLang string類型深入分析

    GoLang string類型深入分析

    string 作為 go 語(yǔ)言中的基礎(chǔ)類型,其實(shí)有一些需要反復(fù)揣摩的,可能是我們使用的場(chǎng)景太簡(jiǎn)單,也可能是我們不需要那可憐的一點(diǎn)優(yōu)化來(lái)提高性能,對(duì)它也就沒(méi)那么上心了
    2023-01-01
  • 詳解Go語(yǔ)言中上下文context的理解與使用

    詳解Go語(yǔ)言中上下文context的理解與使用

    在Go的日常開(kāi)發(fā)中,Context上下文對(duì)象無(wú)處不在,這篇文章小編就來(lái)帶大家深入了解一下上下文context的理解與使用,文中的示例代碼講解詳細(xì),需要的可以參考下
    2023-10-10
  • Go?1.21.0?新增結(jié)構(gòu)化日志記錄標(biāo)準(zhǔn)庫(kù)log/slog使用詳解

    Go?1.21.0?新增結(jié)構(gòu)化日志記錄標(biāo)準(zhǔn)庫(kù)log/slog使用詳解

    這篇文章主要為大家介紹了Go?1.21.0?新增結(jié)構(gòu)化日志記錄標(biāo)準(zhǔn)庫(kù)log/slog使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 詳解Go語(yǔ)言的context包從放棄到入門(mén)

    詳解Go語(yǔ)言的context包從放棄到入門(mén)

    這篇文章主要介紹了Go語(yǔ)言的context包從放棄到入門(mén),本文通過(guò)實(shí)例演示給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Go語(yǔ)言struct要使用?tags的原因解析

    Go語(yǔ)言struct要使用?tags的原因解析

    這篇文章主要介紹了為什么?Go?語(yǔ)言?struct?要使用?tags,在本文中,我們將探討為什么 Go 語(yǔ)言中需要使用 struct tags,以及 struct tags 的使用場(chǎng)景和優(yōu)勢(shì),需要的朋友可以參考下
    2023-03-03
  • Golang操作Kafka的實(shí)現(xiàn)示例

    Golang操作Kafka的實(shí)現(xiàn)示例

    本文主要介紹了Golang操作Kafka的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Go語(yǔ)言編程中字符串切割方法小結(jié)

    Go語(yǔ)言編程中字符串切割方法小結(jié)

    這篇文章主要介紹了Go語(yǔ)言編程中字符串切割方法小結(jié),所整理的方法都來(lái)自字符串相關(guān)的strings包,需要的朋友可以參考下
    2015-10-10
  • Golang開(kāi)發(fā)之字符串與切片問(wèn)題踩坑記錄

    Golang開(kāi)發(fā)之字符串與切片問(wèn)題踩坑記錄

    字符串和切片,都是golang常用的兩種內(nèi)置數(shù)據(jù)類型,最近在日常工作中,遇到了一個(gè)字符串切片導(dǎo)致的問(wèn)題,記錄一下排查問(wèn)題的過(guò)程,避免后續(xù)在這種場(chǎng)景上踩坑
    2023-07-07

最新評(píng)論