【问题标题】:Where is explained the scope of variables in Go in official documentation? [closed]Go 官方文档在哪里解释了变量的范围? [关闭]
【发布时间】:2022-01-23 20:00:06
【问题描述】:

我在go.dev 中找不到任何解释私有/全局变量和变量范围的地方。

作为一个相关问题,我正在努力尝试从_test.go 文件中导入变量。当然这不在那个文档中,但我认为与编译器有关?

【问题讨论】:

标签: go scope


【解决方案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,一如既往的出色帮助!
猜你喜欢
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2012-03-21
  • 2021-02-03
相关资源
最近更新 更多