文件的基目录:ast
文件中指定的包:ast_test???
在同一目录内的所有其他文件中指定的包: ast
来自golang.org :
src 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)?
您在 中找到了另一个示例src/pkg/go/ast/commentmap_test.go,并附有注释:
// To avoid a cyclic dependency with go/parser, this file is in a separate package.
Run Code Online (Sandbox Code Playgroud)
我想它允许像这样的正交命令:
go test
Run Code Online (Sandbox Code Playgroud)
这将测试解析器功能,同时避免该测试成为相同解析器功能的一部分(因为它已放在单独的包中)
从go命令手册页:
声明带有后缀“
_test”的包的测试文件将被编译为单独的包,然后与主测试二进制文件链接并运行。
这个线程问了一个问题:
既然该
go工具要求每个目录都是一个包,并且不允许在同一文件夹中包含不同包名的文件,那么 package 关键字有什么用呢?这似乎是不必要的重复。编译器是否需要它,或者是否有计划将其删除?
答案暗示您可以在一个文件夹中拥有多个包:
包声明声明了包的名称。
Go 语言不知道文件或目录是什么,并且导入路径本身不会影响正在导入的包的实际名称。因此,编译器知道如何调用包的唯一方法是包声明。该语言不需要将单独的包放在单独的目录中;这是
go工具的要求。
另一个假设的实现可能没有这个要求。
go由于“// +build”构建标签,甚至可以绕过这个工具要求。
例如,读取misc/cgo/gmp或misc/cgo/stdio(某些文件包括// +build ignore)