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函数,他们的执行顺序是按照包的导入顺序执行的