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
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...