最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

聊聊golang的defer的使用

 更新時間:2020年12月02日 10:24:16   作者:codecraft  
這篇文章主要介紹了聊聊golang的defer的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧


本文主要研究一下golang的defer

defer

  • return先賦值(對于命名返回值),然后執(zhí)行defer,最后函數(shù)返回
  • defer函數(shù)調(diào)用的執(zhí)行順序與它們分別所屬的defer語句的執(zhí)行順序相反
  • defer后面的表達式可以是func或者是method的調(diào)用,如果defer的函數(shù)為nil,則會panic

實例

實例1

// f returns 42
func f() (result int) {
  defer func() {
    // result is accessed after it was set to 6 by the return statement
    result *= 7
  }()
  return 6
}

這里return先給result賦值為6,之后執(zhí)行defer,result變?yōu)?2,最后返回42

實例2

func f() int {
  result := 6
  defer func() {
    // result is accessed after it was set to 6 by the return statement
    result *= 7
  }()
  return result
}

這里return確定返回值6,之后defer修改result,最后函數(shù)返回return確定的返回值

實例3

func multiDefer() {
  for i := 3; i > 0; i-- {
    defer func(n int) {
      fmt.Print(n, " ")
    }(i)
  }

  for i := 3; i > 0; i-- {
    defer fmt.Print(i, " ")
  }
}

多個defer函數(shù),按順序逆序執(zhí)行,這里輸出1 2 3

實例4

var fc func() string

func main() {
  fmt.Println("hello")
  defer fc()
}

由于defer指定的func為nil,這里panic

實例5

func main() {
  for i := 3; i > 0; i-- {
    defer func() {
      fmt.Print(i, " ")
    }()
  }
}

由于defer這里調(diào)用的func沒有參數(shù),等執(zhí)行的時候,i已經(jīng)為0,因而這里輸出3個0

小結(jié)

defer可以拆解為return賦值,defer執(zhí)行,最后代碼返回三步;defer的順序按逆序執(zhí)行。

doc

Defer_statements
Golang之Defer
golang中defer執(zhí)行時機與常見問題

到此這篇關于聊聊golang的defer的使用的文章就介紹到這了,更多相關golang defer內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用Go語言進行條件編譯的示例代碼

    使用Go語言進行條件編譯的示例代碼

    Go的條件編譯主要通過構(gòu)建標簽(build?tags)和構(gòu)建約束(build?constraints)來實現(xiàn),這些標簽和約束可以讓我們針對不同的操作系統(tǒng)、架構(gòu)或特定條件編寫特定代碼,本文給大家介紹了如何使用Go語言進行條件編譯,需要的朋友可以參考下
    2024-06-06
  • 一文詳解Golang如何解決內(nèi)存溢出

    一文詳解Golang如何解決內(nèi)存溢出

    內(nèi)存溢出是指程序在運行時超出了分配給它的內(nèi)存限制,從而導致程序異常或崩潰的現(xiàn)象,本文主要為大家介紹了Golang解決內(nèi)存溢出的方法,感興趣的小伙伴可以了解下
    2025-01-01
  • GoLang切片相關問題梳理講解

    GoLang切片相關問題梳理講解

    這篇文章主要介紹了GoLang切片相關的七個問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • Golang中時間戳與時區(qū)轉(zhuǎn)換的方法詳解

    Golang中時間戳與時區(qū)轉(zhuǎn)換的方法詳解

    時間是我們生活的基石,而在計算機科學中,時間處理顯得尤為重要,尤其是當你在處理分布式系統(tǒng)、跨時區(qū)應用和全球服務時,時間和時區(qū)的管理變得不可或缺,在這篇文章中,我們將深入探討Golang中的時間戳與時區(qū)轉(zhuǎn)換,需要的朋友可以參考下
    2024-06-06
  • Go語言Select chan用法小結(jié)

    Go語言Select chan用法小結(jié)

    select語句是Go語言中用于處理多個通道操作的關鍵字,它允許你在多個通道上進行非阻塞的選擇操作,本文就詳細介紹一下如何使用,感興趣的可以了解一下
    2023-09-09
  • 詳解Go語言變量作用域

    詳解Go語言變量作用域

    這篇文章主要介紹了Go 語言變量作用域的相關資料,幫助大家更好的理解和學習使用go語言,感興趣的朋友可以了解下
    2021-03-03
  • Go語言獲取系統(tǒng)性能數(shù)據(jù)gopsutil庫的操作

    Go語言獲取系統(tǒng)性能數(shù)據(jù)gopsutil庫的操作

    這篇文章主要介紹了Go語言獲取系統(tǒng)性能數(shù)據(jù)gopsutil庫的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go實現(xiàn)分布式系統(tǒng)高可用限流器實戰(zhàn)

    Go實現(xiàn)分布式系統(tǒng)高可用限流器實戰(zhàn)

    這篇文章主要為大家介紹了Go實現(xiàn)分布式系統(tǒng)高可用限流器實戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Golang實現(xiàn)快速求冪的方法詳解

    Golang實現(xiàn)快速求冪的方法詳解

    這篇文章主要為大家詳細介紹了如何利用Golang實現(xiàn)快速求冪,文中的示例代碼講解詳細,對我們學習或工作有一定參考價值,需要的可以參考一下
    2022-06-06
  • Go語言中零拷貝的原理與實現(xiàn)詳解

    Go語言中零拷貝的原理與實現(xiàn)詳解

    零拷貝是相對于用戶態(tài)來講的,即數(shù)據(jù)在用戶態(tài)不發(fā)生任何拷貝,那么零拷貝的原理是什么,又是如何實現(xiàn)的呢,下面小編就來和大家詳細聊聊吧
    2023-08-08

最新評論

浙江省| 年辖:市辖区| 长岛县| 武强县| 清原| 丹凤县| 浦县| 巴彦县| 广元市| 建湖县| 涟源市| 昭苏县| 历史| 磐石市| 龙里县| 盘锦市| 资溪县| 喀什市| 丁青县| 都江堰市| 利辛县| 平和县| 徐州市| 蓝山县| 寿宁县| 安徽省| 溧水县| 兴隆县| 左云县| 华阴市| 浙江省| 宿松县| 宁明县| 新宁县| 永宁县| 平果县| 陈巴尔虎旗| 泸州市| 彭州市| 密云县| 璧山县|