Go模块中未被main使用的包会被编译吗?go build二进制含其代码吗?
Go构建二进制是否会包含未引用的包代码?
结论:不会包含来自C包的代码
Go的go build工具默认会执行严格的死代码消除(Dead Code Elimination)机制,规则如下:
- 只有被主入口文件(
main.go)或其直接/间接依赖链中的代码才会被编译进最终二进制文件。 - 若C包既未被
main.go直接导入,也未被A、B包的任何代码(包括类型、函数、变量、常量等)引用,那么构建过程会完全忽略C包的代码,不会将其编译到生成的二进制文件中。
额外说明:即便C包被A或B包导入但从未被实际使用,Go的构建工具也会自动剔除这部分未被使用的导入代码,不会出现在最终产物里。
内容的提问来源于stack exchange,提问作者dexian
相关产品推荐
相关产品推荐

