Goの初期化順を調べたのでメモ
Effective Goに書いてるけど一応確認の意味を込めて
main.go
package main
import "echo"
var _ = echo.Echo("main.var")
func init() {
echo.Echo("main.init")
}
func main() {
echo.Echo("main.main")
}
echo.go
package echo
import "fmt"
var _ = Echo("echo.var")
func init() {
Echo("echo.init")
}
func Echo(s string) string {
fmt.Println(s)
return s
}
だと
$ go run main.go
echo.var
echo.init
main.var
main.init
main.main
になるので
まああたり前だけどEffective Goに書いてる通りだった