Go init函數的詳細說明
初始化每個套件後,會自動執行init()函數,並且執行優先權高於主函數的執行優先權。 【相關推薦:Go影片教學】
init函數通常用於:
套件初始化
為了使用導入的套件,必須先對其進行初始化。初始化始終在單一執行緒中執行,並且以程式包依賴關係的順序執行。這由Golang的運行時系統控制,如下圖所示:initial.go
package main import "fmt" var _ int64=s() func init(){ fmt.Println("init function --->") } func s() int64{ fmt.Println("function s() --->") return 1 } func main(){ fmt.Println("main --->") }
執行結果
function s() —>即使套件被多次導入,初始化也只需要一次。init function —>
main —>
特性
init函數不需要傳入參數,也不需要傳回任何值。與main相比,init沒有聲明,因此無法引用。package main import "fmt" func init(){ fmt.Println("init") } func main(){ init() }
undefined:init」時發生錯誤。
package main import "fmt" func init(){ fmt.Println("init 1") } func init(){ fmt.Println("init2") } func main(){ fmt.Println("main") } /* 实施结果: init1 init2 main */
var precomputed=[20]float64{} func init(){ var current float64=1 precomputed[0]=current for i:=1;i<len(precomputed);i++{ precomputed[i]=precomputed[i-1]*1.2 } }
Go套件匯入規則的副作用
Go非常嚴格,不允許引用未使用的軟體包。但是有時您引用套件只是為了呼叫init函數進行一些初始化。空標識符(即下劃線)的目的是解決此問題。import _ "image/png"
摘要
以上是本文的全部。希望本文的內容對您的學習或工作具有參考價值。原文網址:https://developpaper.com/detailed-explanation-of-init-function-in-go-language/翻譯網址:https://learnku .com/go/t/47178更多程式相關知識,請造訪:
程式設計影片! !
以上是一文解析Golang中的init ()函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!