在学习go包管理中提及到 init 函数 于是做了如下测试:
- 在src 目录下的 project1目录新建了 main 文件夹和 test 文件夹
- 然后在 test 文件夹中写了三个go文件,包都为 test
- 在三个文件中都写了 init() 函数 ,三个文件的init函数类似下面
func init() {
fmt.Println("this is girl init")
}
- 之后在main文件中引入test包
import "project1/test"
想看看多个 init函数 会不会冲突,发现 并不会
之后 想看看多个 init 的 执行顺序,结果发现好像是按照 文件命名的 ascii 顺序 (字母顺序)来执行的
执行结果:
this is exam init
this is girl init
this is try init
尝试 改变 三个文件的命名,可以发现输出的顺序与文件名排序一致,我感觉这样有点不是很好啊….
以后应该是尽量 一个包 只写 一个 init函数 吧….