GO語言初始化順序

2021-08-26 08:31:36 字數 695 閱讀 9041

在go程式中,初始化的幾個結構通常為:包(package),常量(const),變數(var),init()和main()。

接下來我說一下這幾個結構的執行順序:

go 程式的初始化順序見下圖:

init()、main() 是 go 語言中的保留函式,兩個函式在 go 語言中的區別如下:

兩個函式在定義時不能有任何的引數和返回值

該函式只能由 go 程式自動呼叫,不可以被引用

init 可以應用於任意包中,且可以重複定義多個。

main 函式只能用於 main 包中,且只能定義乙個。

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

對同乙個 package 中的不同檔案,將檔名按字串進行「從小到大」排序,之後順序呼叫各檔案中的init()函式

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

如果 package 存在依賴,呼叫順序為最後被依賴的最先被初始化,例如:匯入順序 main –> a –> b –> c,則初始化順序為 c –> b –> a –> main,依次執行對應的 init 方法

初始化順序

上次面試碰到一面試題,雖然知道但是感覺還是有必要記錄下來,利己利民,題目是關於初始化順序的,也許對很多初學者還是有點用處的。閒話不多說,先上 package initialseq public class parent public parent public int method package ...

初始化順序

在類的內部,變數定義的順序決定了初始化的順序.即使變數定義散布於方法定義之間,它們仍會在任何方法呼叫之前得到初始化.無論建立多少個物件,靜態資料只占用乙份儲存區域.靜態變數初始化只有在必要時才會執行,比如有類table,如果不建立table物件也不引用table的靜態方法,那麼類table的靜態變數...

初始化順序

初始化,記憶體模型,成員變數,靜態變數,區域性變數,方法 初始化順序,靜態變數 按照類中定義的順序,先父後子 成員變數 按照類中定義的順序 建構函式 其他方法。建立物件時構造器的呼叫順序是 先初始化靜態成員 先父後子 初始化父類成員變數,然後呼叫父類構造器,再初始化自己成員變數,最後呼叫自身構造器。...