gpt4 book ai didi

go - 编译器如何区分哪个模块(库)仅用于测试?

转载 作者:行者123 更新时间:2023-12-01 22:45:39 26 4
gpt4 key购买 nike

假设我们有一个项目使用了一些仅用于测试的第三方模块(或库,如果你愿意的话)(即 github.com/stretchr/testify)。所以我们最终会得到 go.mod像这样的文件:

module example.org/myapp

go 1.13

require (
...
github.com/go-resty/resty/v2 v2.2.0
github.com/gorilla/mux v1.7.4
github.com/stretchr/testify v1.3.0
...
)

正如我所看到的,用于生产代码的模块和仅用于测试的 testify 之间没有区别(即不像在 Java 中我们有像 testcompile 等的依赖范围)所以 golang 编译器如何知道运行时不需要哪个依赖项并且可以在编译的二进制文件中省略吗?

最佳答案

它不仅包括您的go.mod 中的所有内容。 ;编译器会忽略当时正在构建的内容中未引用的任何内容。正确的测试文件命名为 *_test.go并且默认情况下被非测试构建的构建约束排除在外。仅从这些文件中引用的任何内容都只会编译到测试版本中。

关于go - 编译器如何区分哪个模块(库)仅用于测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60514262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com