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

go?defer延遲調(diào)用的使用場景示例詳解

 更新時間:2023年05月30日 08:36:11   作者:Architecture  
這篇文章主要為大家介紹了go?defer延遲調(diào)用的使用場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

defer 簡介

defer 通俗來講就是延遲調(diào)用。defer 會在當(dāng)前函數(shù)返回之前執(zhí)行 defer 注冊的函數(shù)。

例如: defer func_x() 這樣語句會讓你注冊一個函數(shù)變量到 defer 的全局鏈表中,在 defer 語句所在的函數(shù)退出之前調(diào)用。

主要使用場景

panic 場景:這個是重要的一個特性,通常能簡化我們的代碼,確保無論任何場景,defer 的函數(shù)一定調(diào)用,通常用在鎖或者資源的釋放場景較多;

配套的兩個行為代碼可以放在最近的位置:創(chuàng)建&釋放、加鎖&放鎖、前置&后置,使得代碼更易讀,編程體驗優(yōu)秀。最近的地方是哪里?下一行

延遲調(diào)用

package main
func main() {
    defer println("--- defer ---")
    println("--- end ---")
}

defer 會在main函數(shù)之前調(diào)用。

核心要點(diǎn):

延遲調(diào)用:defer 語句本身雖然是 main 的第一行,但是 fmt.Println 是先打印的;

defer 關(guān)鍵字一定是處于函數(shù)上下文:defer 必須放在函數(shù)內(nèi)部

LIFO

一個函數(shù)內(nèi)有多個defer時,壓棧式執(zhí)行,后入先出。

package main
import "fmt"
func main() {
    defer func() {
        fmt.Println("1")
    }()
    defer func() {
        fmt.Println("2")
    }()
}

異常場景

注意:一定要先注冊defer,放在函數(shù)第一行,放到如下代碼return之前,是無法捕獲異常的;

package main
import "fmt"
func main() {
    defer func() {
        if err := recover(); err != nil {
            fmt.Println("捕獲panic", err)
        }
    }()
    var sliceOne []int
    sliceOne[0] = 1
    return
}

以上就是go defer 延遲調(diào)用的詳細(xì)內(nèi)容,更多關(guān)于go defer 延遲調(diào)用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go1.18新特性使用Generics泛型進(jìn)行流式處理

    Go1.18新特性使用Generics泛型進(jìn)行流式處理

    這篇文章主要為大家介紹了Go1.18新特性使用Generics泛型進(jìn)行流式處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Windows環(huán)境下vscode-go安裝筆記(不支持32位)

    Windows環(huán)境下vscode-go安裝筆記(不支持32位)

    這篇文章主要介紹了Windows環(huán)境下vscode-go安裝筆記(不支持32位),需要的朋友可以參考下
    2017-02-02
  • Golang實現(xiàn)四層負(fù)載均衡的示例代碼

    Golang實現(xiàn)四層負(fù)載均衡的示例代碼

    做開發(fā)的同學(xué)應(yīng)該經(jīng)常聽到過負(fù)載均衡的概念,今天我們就來實現(xiàn)一個乞丐版的四層負(fù)載均衡,并用它對mysql進(jìn)行負(fù)載均衡測試,感興趣的可以了解一下
    2023-07-07
  • Go語言中字符串拼接的方法總結(jié)

    Go語言中字符串拼接的方法總結(jié)

    在Go語言中,我們可以使用+操作符、bytes.Buffer、strings.Builder等方法來拼接字符串,本文主要為大家介紹了這些常用方法的實現(xiàn)以及性能對比,感興趣的小伙伴可以了解下
    2023-11-11
  • go語言語法基礎(chǔ)的全面梳理(適合入門)

    go語言語法基礎(chǔ)的全面梳理(適合入門)

    這篇文章主要介紹了go語言語法基礎(chǔ)的相關(guān)資料,從基礎(chǔ)語法到并發(fā)編程,涵蓋變量聲明、數(shù)據(jù)類型、流程控制、函數(shù)、接口、錯誤處理及并發(fā)編程,全面覆蓋Go語言核心特性,需要的朋友可以參考下
    2026-06-06
  • Golang實現(xiàn)圖片上傳功能的示例代碼

    Golang實現(xiàn)圖片上傳功能的示例代碼

    這篇文章主要和大家分享一下如何利用Golang實現(xiàn)圖片上傳功能,文中的實現(xiàn)步驟講解詳細(xì),對我們學(xué)習(xí)有一定的參考價值,需要的可以參考一下
    2022-05-05
  • go語言實現(xiàn)銀行卡號Luhn校驗

    go語言實現(xiàn)銀行卡號Luhn校驗

    這篇文章主要為大家介紹了go語言Luhn校驗測試銀行卡號碼的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Go實現(xiàn)MD5加密的三種方法小結(jié)

    Go實現(xiàn)MD5加密的三種方法小結(jié)

    本文主要介紹了Go實現(xiàn)MD5加密的三種方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • golang如何使用gos7讀取S7200Smart數(shù)據(jù)

    golang如何使用gos7讀取S7200Smart數(shù)據(jù)

    文章介紹了如何使用Golang語言的Gos7工具庫讀取西門子S7200Smart系列PLC的數(shù)據(jù),通過指定數(shù)據(jù)塊號、起始字節(jié)偏移量和數(shù)據(jù)長度,可以精確讀取所需的數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Go 協(xié)程超時控制的實現(xiàn)

    Go 協(xié)程超時控制的實現(xiàn)

    本文主要介紹了Go 協(xié)程超時控制的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

宣汉县| 德令哈市| 东莞市| 云梦县| 金山区| 惠州市| 晋州市| 廉江市| 新竹县| 静乐县| 涞水县| 镇宁| 陆良县| 宁阳县| 青冈县| 临清市| 蓝山县| 鄢陵县| 新兴县| 正安县| 安丘市| 鄂伦春自治旗| 潞城市| 麦盖提县| 花莲县| 西平县| 繁昌县| 雷山县| 崇明县| 南华县| 邯郸县| 潮州市| 永寿县| 新沂市| 南澳县| 徐水县| 临泉县| 阳山县| 宁远县| 合山市| 临桂县|