Go 官方文档在哪里解释了变量的范围? [关闭]
Posted
技术标签:
【中文标题】Go 官方文档在哪里解释了变量的范围? [关闭]【英文标题】:Where is explained the scope of variables in Go in official documentation? [closed] 【发布时间】:2022-01-23 20:00:06 【问题描述】:我在go.dev 中找不到任何解释私有/全局变量和变量范围的地方。
作为一个相关问题,我正在努力尝试从_test.go
文件中导入变量。当然这不在那个文档中,但我认为与编译器有关?
【问题讨论】:
在Language Specification。 go.dev/ref/spec#Declarations_and_scope 这能回答你的问题吗? Understanding variable scope in Go 我在尝试从_test.go
文件中导入变量时遇到了困难。当然这不在那个文档中,但我认为与编译器有关?
_test.go
文件会被 go 工具忽略,除非您正在运行测试。
【参考方案1】:
声明和范围在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”的包的测试文件将被编译为单独的包,然后与主测试二进制文件链接并运行。
【讨论】:
感谢@icza,一如既往的出色帮助!以上是关于Go 官方文档在哪里解释了变量的范围? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章