在go語言中,init()方法用於套件的初始化;初始化每個套件後,會自動執行init()函數,並且執行優先權高於主函數的執行優先權。 init()方法通常用於:1、變數初始化;2、檢查/修復狀態;3、註冊器;4、運行計算。 init()函數在程式運行時,自動自動被呼叫執行,不能在程式碼中主動呼叫它。不同包的init函數依照包導入的依賴關係決定該初始化函數的執行順序。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
Go init函數的詳細說明
#go語言中init函數用於套件(package)的初始化,該函數是go語言的一個重要特性
程式執行時導入包語句會自動觸發包內部init()函數的呼叫。
初始化每個套件後,會自動執行init()函數,並且執行優先權高於主函數的執行優先權。
要注意的是:init()函數沒有參數,也沒有回傳值。
init函數通常用於:
#執行計算
init()函數在程式運行時,自動自動被呼叫執行,不能在程式碼中主動呼叫它。
套件初始化執行的順序如下圖所示:
結果是:
10 Hello 沙河
init()函數有下面的特點:
init函數是用來執行前做套件的初始化的函數,例如初始化套件裡的變數等
每個套件可以擁有多個init函數
套件的每個原始檔案也可以擁有多個init函數
同一個套件中多個init函數的執行順序go語言沒有明確的定義(說明)
不同套件的init函數按照套件導入的依賴關係決定該初始化函數的執行順序
init函數不能被其他函數調用,而是在main函數執行之前,自動被調用
#套件初始化
計算並為區塊中聲明的變數分配初始值
在套件中執行初始化函數
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 —>即使套件被多次導入,初始化也只需要一次。 特性介紹
package main import "fmt" func init(){ fmt.Println("init") } func main(){ init() }編譯上述函數「
undefined:init
」時發生錯誤。 每個原始檔案可以包含一個以上的init函數,請記住,寫在每個原始檔案中的「行進方式」只能包含一個init函數,這有點不同,因此進行下一個驗證。package main import "fmt" func init(){ fmt.Println("init 1") } func init(){ fmt.Println("init2") } func main(){ fmt.Println("main") } /* 实施结果: init1 init2 main */從上面的範例中,您可以看到每個來源檔案可以包含多個init函數。
初始化函數的一個常見範例是設定初始表達式的值。 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
}
}
因為不可能在上面的程式碼(這是一條語句)中將for迴圈用作預先計算的值,所以可以使用init函數來解決此問題。
#Go非常嚴格,不允許引用未使用的軟體包。但是有時您引用套件只是為了呼叫init函數進行一些初始化。空標識符(即下劃線)的目的是解決此問題。
import _ "image/png"【相關推薦:###Go影片教學###、###程式設計教學###】###
以上是go語言的init()方法有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!