欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Go語(yǔ)言變量的生命周期是什么

這篇文章主要介紹了Go語(yǔ)言變量的生命周期是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Go語(yǔ)言變量的生命周期是什么文章都會(huì)有所收獲,下面我們一起來看看吧。

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、域名注冊(cè)、雅安服務(wù)器托管、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

在Go語(yǔ)言中,變量的生命周期指的是在程序運(yùn)行期間變量有效存在的時(shí)間間隔。全局變量的生命周期和整個(gè)程序的運(yùn)行周期是一致的;局部變量的生命周期則是動(dòng)態(tài)的,從創(chuàng)建這個(gè)變量的聲明語(yǔ)句開始,到這個(gè)變量不再被引用為止。

Go語(yǔ)言變量的生命周期

變量的生命周期指的是在程序運(yùn)行期間變量有效存在的時(shí)間間隔。

變量的生命周期與變量的作用域有著不可分割的聯(lián)系:

  • 全局變量:它的生命周期和整個(gè)程序的運(yùn)行周期是一致的;

  • 局部變量:它的生命周期則是動(dòng)態(tài)的,從創(chuàng)建這個(gè)變量的聲明語(yǔ)句開始,到這個(gè)變量不再被引用為止;

  • 形式參數(shù)和函數(shù)返回值:它們都屬于局部變量,在函數(shù)被調(diào)用的時(shí)候創(chuàng)建,函數(shù)調(diào)用結(jié)束后被銷毀。

for t := 0.0; t < cycles*2*math.Pi; t += res {
    x := math.Sin(t)
    y := math.Sin(t*freq + phase)
    img.SetColorIndex(
        size+int(x*size+0.5), size+int(y*size+0.5),
        blackIndex, // 最后插入的逗號(hào)不會(huì)導(dǎo)致編譯錯(cuò)誤,這是Go編譯器的一個(gè)特性
    )               // 小括號(hào)另起一行縮進(jìn),和大括號(hào)的風(fēng)格保存一致
}

上面代碼中,在每次循環(huán)的開始會(huì)創(chuàng)建臨時(shí)變量 t,然后在每次循環(huán)迭代中創(chuàng)建臨時(shí)變量 x 和 y。臨時(shí)變量 x、y 存放在棧中,隨著函數(shù)執(zhí)行結(jié)束(執(zhí)行遇到最后一個(gè)}),釋放其內(nèi)存。

棧和堆的區(qū)別在于:

  • 堆(heap):堆是用于存放進(jìn)程執(zhí)行中被動(dòng)態(tài)分配的內(nèi)存段。它的大小并不固定,可動(dòng)態(tài)擴(kuò)張或縮減。當(dāng)進(jìn)程調(diào)用 malloc 等函數(shù)分配內(nèi)存時(shí),新分配的內(nèi)存就被動(dòng)態(tài)加入到堆上(堆被擴(kuò)張)。當(dāng)利用 free 等函數(shù)釋放內(nèi)存時(shí),被釋放的內(nèi)存從堆中被剔除(堆被縮減);

  • 棧(stack):棧又稱堆棧, 用來存放程序暫時(shí)創(chuàng)建的局部變量,也就是我們函數(shù)的大括號(hào){ }中定義的局部變量。

在程序的編譯階段,編譯器會(huì)根據(jù)實(shí)際情況自動(dòng)選擇在?;蛘叨焉戏峙渚植孔兞康拇鎯?chǔ)空間,不論使用 var 還是 new 關(guān)鍵字聲明變量都不會(huì)影響編譯器的選擇。

var global *int
func f() {
    var x int
    x = 1
    global = &x
}
func g() {
    y := new(int)
    *y = 1
}

上述代碼中,函數(shù) f 里的變量 x 必須在堆上分配,因?yàn)樗诤瘮?shù)退出后依然可以通過包一級(jí)的 global 變量找到,雖然它是在函數(shù)內(nèi)部定義的。用Go語(yǔ)言的術(shù)語(yǔ)說,這個(gè)局部變量 x 從函數(shù) f 中逃逸了。

相反,當(dāng)函數(shù) g 返回時(shí),變量 *y 不再被使用,也就是說可以馬上被回收的。因此,*y 并沒有從函數(shù) g 中逃逸,編譯器可以選擇在棧上分配 *y 的存儲(chǔ)空間,也可以選擇在堆上分配,然后由Go語(yǔ)言的 GC(垃圾回收機(jī)制)回收這個(gè)變量的內(nèi)存空間。

在實(shí)際的開發(fā)中,并不需要刻意的實(shí)現(xiàn)變量的逃逸行為,因?yàn)樘右莸淖兞啃枰~外分配內(nèi)存,同時(shí)對(duì)性能的優(yōu)化可能會(huì)產(chǎn)生細(xì)微的影響。

雖然Go語(yǔ)言能夠幫助我們完成對(duì)內(nèi)存的分配和釋放,但是為了能夠開發(fā)出高性能的應(yīng)用我們?nèi)稳恍枰私庾兞康穆暶髦芷?。例如,如果將局部變量賦值給全局變量,將會(huì)阻止 GC 對(duì)這個(gè)局部變量的回收,導(dǎo)致不必要的內(nèi)存占用,從而影響程序的性能。

關(guān)于“Go語(yǔ)言變量的生命周期是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Go語(yǔ)言變量的生命周期是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享文章:Go語(yǔ)言變量的生命周期是什么
分享路徑:http://chinadenli.net/article42/jeejec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、App設(shè)計(jì)、ChatGPT、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
久久91精品国产亚洲| 色婷婷日本视频在线观看| 国产超薄黑色肉色丝袜| 嫩呦国产一区二区三区av| 亚洲欧美精品伊人久久| 国产自拍欧美日韩在线观看| 国产农村妇女成人精品| 69久久精品亚洲一区二区| 国产白丝粉嫩av在线免费观看| 美女被后入视频在线观看| 天堂热东京热男人天堂| 中国一区二区三区不卡| 久久精品国产一区久久久| 国产一区二区三区精品免费| 亚洲国产av国产av| 欧美成人免费夜夜黄啪啪| 玩弄人妻少妇一区二区桃花| 狠色婷婷久久一区二区三区| 激情偷拍一区二区三区视频| 日韩欧美一区二区不卡看片| 国产在线观看不卡一区二区| 午夜久久精品福利视频| 东京热一二三区在线免| 久久亚洲国产视频三级黄| 美国黑人一级黄色大片| 亚洲欧美日韩综合在线成成| 免费人妻精品一区二区三区久久久| 观看日韩精品在线视频| 日韩精品小视频在线观看| 欧洲一级片一区二区三区| 日本熟女中文字幕一区| 黑丝国产精品一区二区| 日本欧美三级中文字幕| 欧美午夜视频免费观看| 国产亚洲系列91精品| 人妻少妇久久中文字幕久久| av一区二区三区天堂| 夫妻性生活真人动作视频| 又黄又色又爽又免费的视频| 国产精品丝袜一二三区| 久久三级国外久久久三级|