go package init
没地方发,太久没实际写go了,都是面试吹比
发现很多简单的地方都不懂
之前我以为main引用别的包,肯定是别的包的init先走然后才走main的
尽管我看了 go sepc 里的那条”按照 import graph 先初始化被引用的包“,我还是没意识到这一点
简单来说
1. 如果 A 导入了 B,则先走 B 的所有变量初始化/init,再走 A 的。
2. 同一个包内,source 文件名决定了不同文件间的初始化顺序,文件内部则按代码先后。
防止初始化问题,有问题先panic掉
恶补基础了
发现很多简单的地方都不懂
之前我以为main引用别的包,肯定是别的包的init先走然后才走main的
尽管我看了 go sepc 里的那条”按照 import graph 先初始化被引用的包“,我还是没意识到这一点
简单来说
1. 如果 A 导入了 B,则先走 B 的所有变量初始化/init,再走 A 的。
2. 同一个包内,source 文件名决定了不同文件间的初始化顺序,文件内部则按代码先后。
防止初始化问题,有问题先panic掉
恶补基础了
全部评论

我今天又想到一个坑,用 go run 有三个模式,用文件模式一定注意,不会帮你导入其他文件
相关推荐
点赞 评论 收藏
分享
投票

点赞 评论 收藏
分享