Golang:"打包ast_test"下划线测试

时间:2014-07-14 07:16:36

标签: go package-name

来自Golang的stdlib的

Source file

文件的基本目录:ast

文件中指定的包ast_test ???

在同一目录中的所有其他文件中指定的包:ast

来自golang.orgsrc contains Go source files organized into packages (one package per directory) ... By convention, packages are given lower case, single-word names; there should be no need for underscores or mixedCaps ...... Another convention is that the package name is the base name of its source directory

如何在一个文件夹中包含多个包(此处为2)?

1 个答案:

答案 0 :(得分:3)

您在src/pkg/go/ast/commentmap_test.go中找到另一个示例,其中包含注释:

// To avoid a cyclic dependency with go/parser, this file is in a separate package.

我认为它允许像以下一样的正交命令:

go test

这将测试解析器功能,同时避免该测试成为相同解析器功能的一部分(因为它已放在单独的包中)

来自go command man page

  

声明具有后缀“_test”的包的测试文件将被编译为单独的包,然后与主测试二进制文件链接和运行。


This thread问了这个问题:

  
    

既然go工具要求每个目录都是一个包,并且不允许在同一个文件夹中包含不同包名的文件,那么package关键字有用吗?这似乎是不必要的重复。

         

编译器是否需要或有任何计划将其删除?

  

答案暗示你可以在一个文件夹中有多个包:

  

包声明声明包的名称   Go语言不知道文件或目录是什么,导入路径本身不会影响正在导入的包的实际名称。因此,编译器知道调用包的唯一方法是包声明。

     

该语言不需要单独的包在单独的目录中;这是go工具的要求   另一个假设的实现可能没有这个要求。

     

由于“go”构建代码,甚至可以绕过此// +build工具要求。

例如,阅读misc/cgo/gmpmisc/cgo/stdio(某些文件包含// +build ignore