go语言init函数与main函数的执行顺序
package school
import "fmt"
func init() {
fmt.Println("school包初始化了")
}
type School struct {
}
func (s *School) PrintSchool() {
fmt.Println("我是一所学校")
}
package home
import "fmt"
func init() {
fmt.Println("home包初始化了")
}
type User struct{}
func (u *User) PrintUser() {
fmt.Println("我是一个用户")
}
package main
import (
"fmt"
"godemo/home"
"godemo/school"
)
func main() {
fmt.Println("main func 执行了")
school := school.School{}
school.PrintSchool()
home := home.User{}
home.PrintUser()
}
func init() {
fmt.Println("main包初始化了")
}
上面代码里 school包和home包 都有init(),问题:打印顺序是什么样的?
结果如下

一个包可以有多个init函数吗?同一个文件里可以有多个init函数吗?
答案:可以。可以。
使用多个包,这些包里都有init函数,他们的执行顺序是按照包的导入顺序执行的

浙公网安备 33010602011771号