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
}