【发布时间】:2022-01-23 20:00:06
【问题描述】:
【问题讨论】:
-
这能回答你的问题吗? Understanding variable scope in Go
-
我在尝试从
_test.go文件中导入变量时遇到了困难。当然这不在那个文档中,但我认为与编译器有关? -
_test.go文件会被 go 工具忽略,除非您正在运行测试。
【问题讨论】:
_test.go 文件中导入变量时遇到了困难。当然这不在那个文档中,但我认为与编译器有关?
_test.go 文件会被 go 工具忽略,除非您正在运行测试。
声明和范围在Language Specification的不同部分进行了详细说明,有关详细信息和全面概述,请参阅Understanding variable scope in Go。
正如您在 cmets 中提到的,您的问题是您无法从 _test.go 文件中导入变量。语言规范没有提到这一点,所以这是一个实现限制。
引用Command documentation: Compile packages and dependencies:
编译包时,build 会忽略以 '_test.go' 结尾的文件。
它们仅在您运行测试时使用。 Test packages:
'Go test' 重新编译每个包以及名称与文件模式“*_test.go”匹配的任何文件。这些附加文件可以包含测试函数、基准函数和示例函数。有关更多信息,请参见“go help testfunc”。每个列出的包都会导致执行单独的测试二进制文件。名称以“_”(包括“_test.go”)或“.”开头的文件被忽略。
声明后缀为“_test”的包的测试文件将被编译为单独的包,然后与主测试二进制文件链接并运行。
【讨论】: