Golang init() 函式
如果❤️我的文章有幫助,歡迎點贊、關注。這是對我繼續技術創作最大的鼓勵。
Golang init() 函式
先舉個例子
init() 是什麼
在 Go
語言設計過程中保留了預設的兩個函式,分別是 main()
和 init()
函式。
兩者的區別在於:
-
main()
函式只能使用於main
包中,而且每個main
包只能有一個main()
函式 - 但對於
init()
函式, 則能夠使用在所有的包中。而且一個程式(甚至一個檔案)中可以寫任意多個init()
函式。
注意:一個程式(甚至一個檔案)中可以寫任意多個
init()
函式,但對於維護程式碼可讀性
、排查問題
並沒有任何好處
init() 特點
-
init()
用於程式執行前
的進行包初始化(自定義變數、例項化通訊連線)工作 -
每個包
、每個程式檔案
可以同時擁有多個init(),但不建議
- 同一個包、檔案中多個
init() 執行順序
, Golang 中並未明確 - 不同包的
init()
執行順序,按照匯入包的依賴關係
決定 -
init()
不能被其他函式呼叫,而自動在main函式執行前
被呼叫
—— 參考來源於 [effective_go] golang.google.cn/doc/effective_go#init
init() 什麼時候執行
init()
函式 是 Golang 程式初始化
包含的一部分。
在 Golang 中程式的 初始化先於 main()
執行:具體由 runtime
初始化每個被匯入的包。
- 初始化順序是按照
解析的依賴關係
的順序執行,沒有依賴的包最先初始化。 - 首先初始化的是 每個包作用域內的
常量
、變數
(其中:常量先於變數),之後執行包內init()
。 - 相同一個包、檔案可以
同時擁有
多個 init()。 - init() 和 main() 一樣,
沒有任何引數和返回值
,不能夠被其他函式呼叫。 - 同一個包、檔案
多個 init()
執行順序並未明確。
執行順序總結: import –> const –> var –> init() –> main()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2797534/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- golang中的init初始化函式Golang函式
- Go init 函式Go函式
- Golang匿名函式Golang函式
- Python 中__init__函式以及引數selfPython函式
- 類中的__init__()和__call__()函式函式
- golang函式使用基礎Golang函式
- Golang 常用函式記錄Golang函式
- [譯] part 14: golang 函式Golang函式
- Golang 常用的 strings 函式Golang函式
- Golang字串函式認識(一)Golang字串函式
- Golang字串函式認識(二)Golang字串函式
- Golang實現PHP常用函式GolangPHP函式
- Golang記憶體分配內建函式之new函式Golang記憶體函式
- 詳解Python魔法函式,__init__,__str__,__del__Python函式
- [譯] part 33: golang 頭等函式Golang函式
- Golang之不可重入函式實現Golang函式
- Golang學習筆記-1.6 函式Golang筆記函式
- Golang 基礎之函式使用 (三)Golang函式
- Golang 基礎之函式使用 (一)Golang函式
- Golang 基礎之函式使用 (二)Golang函式
- PLC結構化文字(ST)——建構函式(FB_init)函式
- Golang時間函式及測試函式執行時間案例Golang函式
- golang count 單字元 字串 統計函式Golang字元字串函式
- 小白學習Golang(六)Go語言函式Golang函式
- Golang建立建構函式的方法詳解Golang函式
- 在Golang中使用泛型reduce函式 - gosamplesGolang泛型函式
- 我的 golang 學習筆記系列二:golang的函式運用Golang筆記函式
- 痞子衡嵌入式:深扒IAR啟動函式流程之段初始化函式__iar_data_init3實現函式
- [靈性程式設計]函式委託,自動事件,函式觀察者(golang)程式設計函式事件Golang
- Python學習系列之類的定義、建構函式 def __init__Python函式
- 痞子衡嵌入式:深扒IAR啟動函式流程及其__low_level_init設計對函式重定向的影響函式
- golang學習之路之函式可變引數Golang函式
- Golang閉包案例分析與普通函式對比Golang函式
- Golang中函式傳參存在引用傳遞嗎?Golang函式
- Golang原始碼學習:使用gdb除錯探究Golang函式呼叫棧結構Golang原始碼除錯函式
- 2. 流程控制 與 函式 |《 刻意學習 Golang 》函式Golang
- Golang 註釋規範-類、函式、結構體等Golang函式結構體
- Golang 中函式作為值與型別(轉載)Golang函式型別