go 关于包中的init函数

版权声明: https://blog.csdn.net/qq_29785317/article/details/81278396

在学习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函数 吧….

猜你喜欢

转载自blog.csdn.net/qq_29785317/article/details/81278396
今日推荐