Go程序的初始化总是从main包下的main方法开始的,如果main包中引入了其他的包,则会首先导入其他的包,并执行对应包中的inti()方法,若只需要某个包中的init函数,不需要其中的其他方法则可以通过以下方式实现:

_ "net/http"

Go文件的初始化顺序:

1 从main方法开始,若包含其他的包,首先引入其他包
2 若其他包也引用了别的包,则首先引入其他的包,然后创建和初始化这个包的常量和变量,但是包的引用不能出现循环引用的情况,即包A import B |包B import C | C import A,不能出现引用的闭环。
3 一个文件中的多个init()方法按照出现的顺序依次执行。
4 在main包的所有包变量、包常量被创建和初始化,且只有在init()方法被执行后,才会进入mian.main()函数

Goroutine的创建

go语句会在当前Goroutine对应函数返回之前创建新的Goroutine