go中的main函式和init函式

2021-07-05 06:32:02 字數 965 閱讀 9560

go

裡面有兩個保留的函式:

init

函式(能夠應用於所有的

package

)和main

函式(只能應用於

package main

)。這兩個函式在定義時不能有任何的引數和返回值。雖然乙個

package

裡面可以寫任意多個

init

函式,但這無論是對於可讀性還是以後的可維護性來說,我們都強烈建議使用者在乙個

package

中每個檔案只寫乙個

init

函式。

go程式會自動呼叫

init()

和main()

,所以你不需要在任何地方呼叫這兩個函式。每個

package

中的init

函式都是可選的,但

package main

就必須包含乙個

main

函式。

程式的初始化和執行都起始於

main

包。如果

main

包還匯入了其它的包,那麼就會在編譯時將它們依次匯入。有時乙個包會被多個包同時匯入,那麼它只會被匯入一次(例如很多包可能都會用到

fmt包,但它只會被匯入一次,因為沒有必要匯入多次)。當乙個包被匯入時,如果該包還匯入了其它的包,那麼會先將其它包匯入進來,然後再對這些包中的包級常量和變數進行初始化,接著執行

init

函式(如果有的話),依次類推。等所有被匯入的包都載入完畢了,就會開始對

main

包中的包級常量和變數進行初始化,然後執行

main

包中的init

函式(如果存在的話),最後執行

main

函式。下圖詳細地解釋了整個執行過程:

go中的main函式和init函式

go裡面有兩個保留的函式 init 函式 能夠應用於所有的 package 和main 函式 只能應用於 package main 這兩個函式在定義時不能有任何的引數和返回值。雖然乙個 package 裡面可以寫任意多個 init 函式,但這無論是對於可讀性還是以後的可維護性來說,我們都強烈建議使用...

go中的main函式和init函式

go裡面有兩個保留的函式 init函式 能夠應用於所有的package 和main函式 只能應用於package main 這兩個函式在定義時不能有任何的引數和返回值。雖然乙個package裡面可以寫任意多個init函式,但這無論是對於可讀性還是以後的可維護性來說,我們都強烈建議使用者在乙個pack...

main 函式和 init 函式

go裡面有兩個保留的函式 init函式 能夠應用於所有的package 和main函式 只能應用於package main 這兩個函式在定義時不能有任何的引數和返回值。雖然乙個package裡面可以寫任意多個init函式,但這無論是對於可讀性還是以後的可維護性來說,我們都強烈建議使用者在乙個pack...