91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中init函數的作用是什么

發布時間:2021-07-06 15:47:25 來源:億速云 閱讀:1190 作者:Leah 欄目:大數據

本篇文章為大家展示了Go語言中init函數的作用是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Go語言有一個特殊的函數init,先于main函數執行,實現包級別的一些初始化操作。

對于init 函數來說:每個包可以包含任意多個 init 函數,這些函數都會在程序執行開始的時候被調用。所有被編譯器發現的 init 函數都會安排在 main 函數之前執行。init 函數用在設置包、初始化變量或其他要在程序運行前優先完成的引導工作。

init函數的主要作用:1)初始化不能采用初始化表達式初始化的變量。2)程序運行前的注冊。3)實現sync.Once功能。(備注:init函數沒有輸入參數、返回值。)

1.單個包中的init函數執行順序

在Go語言中,執行順序為:初始化變量--》init函數--》main函數

Go語言中init函數的作用是什么

結果分析:通過輸出結果,我們可以看到,Go語言的程序,在開始運行之前,首先執行的是變量初始化操作,然后是init()函數,最后是main()函數。

2.單個包中有多個init函數的話,它們的執行順序是不確定的

Go語言中,一個包文件和一個.go文件中可以實現多個init()函數,也不會編譯出錯。

Go語言中init函數的作用是什么

Go語言中init函數的作用是什么

結果分析:通過輸出結果,我們能夠看出同一個包中的init函數是可以實現多個的,理論上他們的執行順序可以不同,但是筆者執行了5次都是上面的結果,不知道是不是編譯順序的原因。

3. 相互依賴的包之間的init函數,按照遞歸的順序執行

如題,如下圖所示:

Go語言中init函數的作用是什么

(轉載:https://blog.csdn.net/benben_2015/article/details/79486077)

例子如下所示:

Go語言中init函數的作用是什么

Go語言中init函數的作用是什么

結果分析:包的依賴關系 main->b->a, 所以輸出結果的init函數執行順序是,先執行a中的,再執行b中的,最后執行c中的。

4. 補充知識:

Go要求非常嚴格,不允許引用不使用的包,不過我們可以采用下面的格式(import _ pkg)來引用,只是用它來執行對應包的init函數。

將上面c.go中的import "./b" 替換成import _ "./b", 并將main()中的b.B()刪除,執行結果如下所示。

Go語言中init函數的作用是什么

上述內容就是Go語言中init函數的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沅江市| 吴桥县| 鄂托克前旗| 沧源| 白城市| 武乡县| 兰西县| 信阳市| 临澧县| 信宜市| 循化| 铁岭县| 江门市| 栾川县| 宜兰市| 土默特右旗| 望江县| 翁牛特旗| 舟曲县| 南京市| 淮南市| 蕲春县| 襄樊市| 开封市| 嘉善县| 武义县| 富裕县| 玉门市| 昌都县| 马山县| 柏乡县| 河北省| 兴安县| 葫芦岛市| 晴隆县| 辉县市| 达尔| 成都市| 新巴尔虎左旗| 五莲县| 洛隆县|