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

 

posted @ 2024-11-09 14:27  今天滴天气不错  阅读(2)  评论(0编辑  收藏  举报