main 函式和 init 函式

2022-09-05 03:42:10 字數 1029 閱讀 7711

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函式。下圖詳細地解釋了整個執行過程:

圖2.6 main函式引入包初始化流程圖

go中的main函式和init函式

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

go中的main函式和init函式

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

go中的main函式和init函式

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