Detailed description of Go init function
After initializing each package, the init() function will be automatically executed, and the execution priority is higher than The execution priority of the main function. [Related recommendations: Go video tutorial]
The init function is usually used for:
Package Initialization
In order to use an imported package, it must first be initialized. Initialization is always performed in a single thread and in the order of package dependencies. This is controlled by Golang's runtime system, as shown below:
##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 --->") }
Execution result
function s() —>Even if the package is imported multiple times, Initialization only needs to be done once.init function —>
main —>
Features
The init function does not need to pass in parameters, nor does it need to return any value. In contrast to main, init is not declared and therefore cannot be referenced.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 } }
Side effects of Go package import rules
Go is very strict and does not allow references to unused packages. But sometimes you reference the package just to call the init function to do some initialization. The purpose of the empty identifier (i.e. the underscore) is to solve this problem.import _ "image/png"
Abstract
The above is the entire content of this article. I hope the content of this article will be of reference value to your study or work.Original address: https://developpaper.com/detailed-explanation-of-init-function-in-go-language/Translation address: https://learnku .com/go/t/47178For more programming-related knowledge, please visit:
Programming Video! !
The above is the detailed content of An article analyzing the init () function in Golang. For more information, please follow other related articles on the PHP Chinese website!