LoginSignup
40
30

More than 5 years have passed since last update.

Go言語: var, init, mainが実行される順番

Posted at

go runを実行したとき、Goでvar, init, mainがどの順で実行されるのかを調べてみたところ、次の順番のようでした。

  1. importしたパッケージのvarが定義される
  2. importしたパッケージのinit関数が実行される
  3. mainパッケージのvarが定義される
  4. mainパッケージのinit関数が実行される
  5. mainパッケージのmain関数が実行される

下のコードは、mainパッケージだけのものですが、Go Playgroundで試せます。

package main

var someVar = defaultVar()

func init() {
    println("main.init was called")
}

func main() {
    println("main.main was called")
}

func defaultVar() int {
    println("main.var was initialized")
    return 0
}
40
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
30