国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

簡單了解Go語言中函數作為值以及函數閉包的使用

2020-04-01 19:12:20
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了簡單了解Go語言中函數作為值以及函數閉包的使用,是golang入門學習中的基礎知識,需要的朋友可以參考下
 

函數作為值

Go編程語言提供靈活性,以動態創建函數,并使用它們的值。在下面的例子中,我們已經與初始化函數定義的變量。此函數變量的目僅僅是為使用內置的Math.sqrt()函數。下面是一個例子:

復制代碼代碼如下:

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))

}


當上述代碼被編譯和執行時,它產生了以下結果:
 

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

復制代碼代碼如下:

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())
}


當上述代碼被編譯和執行時,它產生了以下結果:
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 科技| 定陶县| 诸城市| 花垣县| 沽源县| 德钦县| 北辰区| 曲沃县| 磐安县| 张掖市| 池州市| 阳东县| 荃湾区| 徐汇区| 宁都县| 竹北市| 东阳市| 会昌县| 多伦县| 栾川县| 安徽省| 石城县| 含山县| 汾阳市| 平乐县| 泌阳县| 商洛市| 桂林市| 太和县| 庐江县| 绍兴县| 平远县| 保靖县| 金秀| 克拉玛依市| 游戏| 泊头市| 阜新| 朝阳市| 珲春市| 同心县|