init - skynocover/Wiki-for-GoLang GitHub Wiki

特性

  • init函數先於main函數自動執行,不能被其他函數調用;
  • init函數沒有輸入參數、返回值;
  • 每個包可以有多個init函數;

初始化順序:變量初始化->init()->main()


init()可以在同一個package內重複執行多次

func init() {
    fmt.Println("init 1")
} 
func init() {
    fmt.Println("init 2")
} 
func main() {
    fmt.Println("Hello, playground")
}

如果只需要package內的init()而不需要其他變數可以用_

_ "github.com/lib/pq

主要用途

用來初始化不能使用初始化表達式初始化的變量

var initArg [20]int
func init() {
   initArg[0] = 10
   for i := 1; i < len(initArg); i++ {
       initArg[i] = initArg[i-1] * 2
   }
}