go runを実行したとき、Goでvar, init, mainがどの順で実行されるのかを調べてみたところ、次の順番のようでした。
- importしたパッケージの
varが定義される - importしたパッケージの
init関数が実行される - mainパッケージの
varが定義される - mainパッケージの
init関数が実行される - 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
}