校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 聊聊golang的defer的使用

聊聊golang的defer的使用

熱門標簽:赤峰電銷 400開頭電話怎樣申請 杭州人工智能電銷機器人費用 谷歌美發店地圖標注 官渡電銷外呼管理系統怎么收費 利用地圖標注位置 地圖區域圖標注后導出 江蘇呼叫中心外呼系統有效果嗎 貴州電話智能外呼系統


本文主要研究一下golang的defer

defer

  • return先賦值(對于命名返回值),然后執行defer,最后函數返回
  • defer函數調用的執行順序與它們分別所屬的defer語句的執行順序相反
  • defer后面的表達式可以是func或者是method的調用,如果defer的函數為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,之后執行defer,result變為42,最后返回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,最后函數返回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函數,按順序逆序執行,這里輸出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這里調用的func沒有參數,等執行的時候,i已經為0,因而這里輸出3個0

小結

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

doc

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

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

您可能感興趣的文章:
  • Golang之defer 延遲調用操作
  • Golang學習筆記之延遲函數(defer)的使用小結
  • golang中defer的關鍵特性示例詳解
  • golang中defer的使用規則詳解
  • Golang巧用defer進行錯誤處理的方法
  • Golang 的defer執行規則說明

標簽:河池 鷹潭 保定 武漢 宜春 黔西 松原 泰安

巨人網絡通訊聲明:本文標題《聊聊golang的defer的使用》,本文關鍵詞  聊聊,golang,的,defer,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《聊聊golang的defer的使用》相關的同類信息!
  • 本頁收集關于聊聊golang的defer的使用的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 崇义县| 东安县| 阿图什市| 黄平县| 郯城县| 普格县| 会同县| 中卫市| 鹤岗市| 东宁县| 东辽县| 奈曼旗| 武鸣县| 贵南县| 太谷县| 藁城市| 拉萨市| 玉树县| 陇西县| 汉沽区| 尼勒克县| 蓬莱市| 哈尔滨市| 芜湖市| 盐津县| 新绛县| 鲁山县| 墨竹工卡县| 承德市| 股票| 泗水县| 四会市| 新宁县| 渭源县| 南郑县| 长岛县| 桦南县| 安庆市| 化德县| 台山市| 平罗县|