go init函式和 main函式

2021-10-12 17:25:13 字數 877 閱讀 7236

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 無引數形式...