在Go語(yǔ)言中,init()
函數(shù)是一個(gè)特殊的函數(shù),它會(huì)在程序運(yùn)行時(shí)自動(dòng)被調(diào)用,而不需要顯式調(diào)用。
init()
函數(shù)的執(zhí)行順序如下:
init()
函數(shù)之前執(zhí)行。init()
函數(shù),它們會(huì)按照它們?cè)诖a中出現(xiàn)的順序依次執(zhí)行。需要注意的是,init()
函數(shù)在程序執(zhí)行過(guò)程中只會(huì)執(zhí)行一次。如果一個(gè)包被多次導(dǎo)入,init()
函數(shù)只會(huì)執(zhí)行一次。
下面是一個(gè)示例代碼,展示了init()
函數(shù)的執(zhí)行順序:
package main
import (
"fmt"
)
var packageVar = initializePackageVar()
func initializePackageVar() int {
fmt.Println("Initializing package-level variable")
return 42
}
func init() {
fmt.Println("Executing init() function")
}
func main() {
fmt.Println("Main function")
}
輸出結(jié)果為:
Initializing package-level variable
Executing init() function
Main function
從輸出結(jié)果可以看出,在程序運(yùn)行之前,包級(jí)別的變量會(huì)被初始化。然后,在程序運(yùn)行時(shí),init()
函數(shù)會(huì)被自動(dòng)調(diào)用。最后,main()
函數(shù)被調(diào)用。