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

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

golang中defer的使用方法

在golang當(dāng)中,defer代碼塊會(huì)在函數(shù)調(diào)用鏈表中增加一個(gè)函數(shù)調(diào)用。這個(gè)函數(shù)調(diào)用不是普通的函數(shù)調(diào)用,而是會(huì)在函數(shù)正常返回,也就是return之后添加一個(gè)函數(shù)調(diào)用。因此,defer通常用來(lái)釋放函數(shù)內(nèi)部變量。

為白沙黎族等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及白沙黎族網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、白沙黎族網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

通過(guò)defer,我們可以在代碼中優(yōu)雅的關(guān)閉/清理代碼中所使用的變量。defer作為golang清理變量的特性,有其獨(dú)有且明確的行為。

package main

func main() {
    test()
}func test() {
    println("test1")    defer func() {
        println("defer test2")
    }()
    println("test3")
}

執(zhí)行結(jié)果如下:

test1
test3
defer test2

很清楚地看到,有defer那個(gè)函數(shù)最后才執(zhí)行的

現(xiàn)在改一下代碼,讓代碼panic,當(dāng)拋出異常時(shí),defer延遲函數(shù)還會(huì)執(zhí)行嗎?

package main

func main() {
    test()
}func test() {

    println("test1")
        panic("panic")    defer func() {
        println("defer test2")
    }()
    
    println("test3")
}

輸出

test1
panic: panic
Process finished with exit code 2

延遲函數(shù)居然沒(méi)有執(zhí)行,為什么會(huì)這樣呢?是因?yàn)閜anic在延遲函數(shù)之前了,再改一下代碼如下

package main

func main() {
    test()
}func test() {

    println("test1")    defer func() {
        println("defer test2")
    }()
    panic("panic")
    println("test3")
}

輸出

test1
defer test2
panic: panic

延遲函數(shù)執(zhí)行了,可以看到panic在延遲函數(shù)之前延遲函數(shù)是執(zhí)行不了的,畢竟拋出異常。

以上就是golang defer什么時(shí)候執(zhí)行的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!


文章標(biāo)題:golang中defer的使用方法
網(wǎng)站網(wǎng)址:http://weahome.cn/article/jjojei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部