1. 程式人生 > 其它 >golang中的init函式和main函式

golang中的init函式和main函式

一. Init函式:

1. init函式是用於程式執行前做包的初始化的函式,比如初始化包裡的變數等
2.每個包可以擁有多個init函式

3.包的每個原始檔也可以擁有多個init函式

4.同一個包中多個init函式的執行順序go語言沒有明確的定義(說明)

5.不同包的init函式按照包匯入的依賴關係決定該初始化函式的執行順序

6.init函式不能被其他函式呼叫,而是在main函式執行之前,自動被呼叫

二.main函式:

Go語言程式的預設入口函式(主函式):func main()
函式體用{}一對括號包裹。
func main(){
//函式體
}

三.相同點:

兩個函式在定義時不能有任何的引數和返回值,且Go程式自動呼叫。


四.不同點:

init可以應用於任意包中,且可以重複定義多個。
main函式只能用於main包中,且只能定義一個。

五.執行順序:

兩個函式的執行順序:

對同一個go檔案的init()呼叫順序是從上到下的。

對同一個package中不同檔案是按檔名字串比較“從小到大”順序呼叫各檔案中的init()函式。

對於不同的package,如果不相互依賴的話,按照main包中"先import的後呼叫"的順序呼叫其包中的init(),

如果package存在依賴,則先呼叫最早被依賴的package中的init(),最後呼叫main函式。

如果init函式中使用了println()或者print()你會發現在執行過程中這兩個不會按照你想象中的順序執行。

這兩個函式官方只推薦在測試環境中使用,對於正式環境不要使用。