真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言中閉包的作用

本文以go語言為例,為大家分析go語言中閉包的作用。閱讀完整文相信大家對go語言中閉包有了一定的認(rèn)識。在理解go語言中閉包的作用之間我們先來看看閉包的定義。

目前成都創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運(yùn)營、企業(yè)網(wǎng)站設(shè)計、豐南網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

什么是閉包?

Go 函數(shù)可以是一個閉包。閉包是一個函數(shù)值,它引用了函數(shù)體之外的變量。    

這個函數(shù)可以對這個引用的變量進(jìn)行訪問和賦值;換句話說這個函數(shù)被“綁定”在這個變量上。

我的不靠譜的理解,一個閉包相當(dāng)于一個類的實(shí)例,函數(shù)體之外的變量相當(dāng)于這個實(shí)例存儲的變量。

沒有閉包的時候,函數(shù)就是一次性買賣,函數(shù)執(zhí)行完畢后就無法再更改函數(shù)中變量的值(應(yīng)該是內(nèi)存釋放了);

有了閉包后函數(shù)就成為了一個變量的值,只要變量沒被釋放,函數(shù)就會一直處于存活并獨(dú)享的狀態(tài),因此可以后期更改函數(shù)中變量的值(因?yàn)檫@樣就不會被go給回收內(nèi)存了,會一直緩存在那里)。

閉包的主要意義

縮小變量作用域,減少對全局變量的污染。下面的累加如果用全局變量進(jìn)行實(shí)現(xiàn),全局變量容易被其他人污染。

同時,所有我要實(shí)現(xiàn)n個累加器,那么每次需要n個全局變量。

利用背包,每個生成的累加器myAdder1, myAdder2 := adder(), adder()有自己獨(dú)立的sum,sum可以看作為myAdder1.sum與myAdder2.sum。

利用背包可以實(shí)現(xiàn)有自身狀態(tài)的函數(shù)!

package main

import (
	"fmt"
)

func adder() func(int) int {
	sum := 0
	return func(x int) int {
		sum += x
		return sum
	}
}

func main() {
	myAdder := adder()
	
	// 從1加到10
	for i := 1; i <= 10; i++ {
		myAdder(i)
	}
	
	fmt.Println(myAdder(0))
	// 再加上45
	fmt.Println(myAdder(45))
}

結(jié)果:

55// 1+...+10
100

看完上述內(nèi)容,你們對go語言中閉包的作用有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。


當(dāng)前題目:go語言中閉包的作用
鏈接分享:http://weahome.cn/article/jghegs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部