首頁 > 後端開發 > Golang > Go 的 init() 函數到底在什麼時候運行?

Go 的 init() 函數到底在什麼時候運行?

Susan Sarandon
發布: 2024-12-20 22:41:16
原創
241 人瀏覽過

When Exactly Does Go's `init()` Function Run?

init() 函數何時運作?

init() 函數是 Go 中的一個特殊函數,在 main 之前呼叫() 函數的封裝。它通常用於初始化變數和其他設定任務。但是,Effective Go 中的以下這句話到底是什麼意思:

「Andfinally 的意思是finally:init 在套件中的所有變數聲明都評估了它們的初始值設定項之後被調用,並且只有在所有導入的套件之後才評估它們已初始化。函數在當前包中的所有全域變數以及任何導入的包都已使用預設值初始化後運行。需要注意的是,初始化的順序是基於套件檔案的詞彙順序,而不是聲明導入的順序。

例如:

在此範例中,在 GlobalVar1 初始化為 10 之後呼叫 init() 函數,並在 main() 函數執行之前將 GlobalVar1 的值覆蓋為 20。
var GlobalVar1 = 10

func init() {
    GlobalVar1 = 20
}

func main() {
    // GlobalVar1 is 20
}
登入後複製

值得一提的是,無論套件是否有 main() 函數,init() 函數都會被呼叫。這意味著,如果您匯入具有 init() 函數的套件,它將在您自己包的 init() 函數之前執行。

此外,可以在單一套件中定義多個 init() 函數包,並且它們將按照它們在來源檔案中出現的順序執行。這允許您按特定順序執行多個初始化任務。

以上是Go 的 init() 函數到底在什麼時候運行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板