天天看點

Go init 初始化函數

main 包與 init 函數

main 包用于聲明告知編譯器将包編譯為二進制可執行檔案 ,在 main 包中的 main 函數是程式的入口,無傳回值,無參數。

main函數也常常寫在main包裡面,在其他地方不寫。

init 函數

init 函數是初始化包使用,無傳回值,無參數。建議每個包隻定義一個。init 函數在 import

包時自動被調用(const->var->init)。

初始化函數就是在導入包的時候執行的

Go init 初始化函數

_用來做初始化導入的 

Go init 初始化函數

可以看到main裡面什麼都沒有,但是卻列印了init函數裡面的語句。

程式執行的時候加載main包,main裡面再去加載其他的,在main裡面從上到下加載程式,先去加載程式,在加載程式的時候發現import了,這個時候要去找import包并且進行加載。

在找到包進行加載的時候也會從上到下依次進行加載,如果包裡面有import那麼還會去加載其他的。因為一個包下面有很多go檔案,是以在加載的時候會把這些檔案都加載進來。加載完之後會看一下有哪些init函數,然後執行所有的init函數,執行完所有init那麼第一個import導入工作就算完成了。

Go init 初始化函數

import完之後就會執行main函數的加載,如果main包中還有init函數那麼也先執行init函數初始化,執行完之後才會執行main函數。(一個包裡面可以包含多個init函數)

繼續閱讀