init函式
go語言中 init 函式用於包 package的初始化,該函式是go語言的乙個重要特徵
有以下的特徵
1、init函式是用於程式執行錢做包的初始化的函式,比如初始化包裡的變數等
2、每個包可以擁有多個init函式
3、包的每個原始檔也可以擁有多個init函式
4、同乙個包中多個init函式的執行順序go語言沒有明確的定義(說明)
5、不同包的init函式按照包匯入的依賴關係覺得該初始化函式的執行順序
6、init函式不能被其他函式呼叫,二十在main函式執行之前,自動被呼叫
main函式
go語言程式預設入口函式(主函式):func main()
函式體用{} 一對括號包裹
func main()
init函式和main函式的異同
相同點:
兩個函式在定義時不能有任何的引數和返回值,且go程式自動呼叫
不同點:
init可以用於任意包中,且可以重複定義多個
main函式只能用於main包中,且只能定義乙個
兩個函式的執行順序
對同乙個go檔案的init()呼叫順序是從上到下
對同乙個package中不同檔案是按檔名稱比較「從小到大」順序呼叫各檔案中的init()函式
對於不公的package,如果不相互依賴的話,按照main包中先「import」的後呼叫的順序呼叫包中的init(),如果package存在依賴,
則先呼叫最早被以來的 package中的init(),最後電泳main函式
如果init函式中使用了println()或者print()你會發現在執行中的兩個不會按照你想象中的順序執行
正式環境中不要使用println()和print()函式
Go init函式詳解
init 函式會在每個包完成初始化後自動執行,並且執行優先順序比main函式高。init 函式通常被用來 為了使用匯入的包,首先必須將其初始化。初始化總是以單執行緒執行,並且按照包的依賴關係順序執行。這通過golang的執行時系統控制,如下圖所示 初始化匯入的包 遞迴匯入 對包塊中宣告的變數進行計算...
main 函式和 init 函式
go裡面有兩個保留的函式 init函式 能夠應用於所有的package 和main函式 只能應用於package main 這兩個函式在定義時不能有任何的引數和返回值。雖然乙個package裡面可以寫任意多個init函式,但這無論是對於可讀性還是以後的可維護性來說,我們都強烈建議使用者在乙個pack...
main函式詳解
c的設計原則是把函式作為程式的構成模組。main 函式稱之為主函式,乙個c程式總是從main 函式開始執行的。在最新的 c99 標準中,只有以下兩種定義方式是正確的 參閱iso iec 9899 1999 e 5.1.2.2.1 program startup int main void 無引數形式...