文件的基本目录: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)?
答案 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
这将测试解析器功能,同时避免该测试成为相同解析器功能的一部分(因为它已放在单独的包中)
声明具有后缀“
_test
”的包的测试文件将被编译为单独的包,然后与主测试二进制文件链接和运行。
This thread问了这个问题:
既然
go
工具要求每个目录都是一个包,并且不允许在同一个文件夹中包含不同包名的文件,那么package关键字有用吗?这似乎是不必要的重复。编译器是否需要或有任何计划将其删除?
答案暗示你可以在一个文件夹中有多个包:
包声明声明包的名称 Go语言不知道文件或目录是什么,导入路径本身不会影响正在导入的包的实际名称。因此,编译器知道调用包的唯一方法是包声明。
该语言不需要单独的包在单独的目录中;这是
go
工具的要求 另一个假设的实现可能没有这个要求。由于“
go
”构建代码,甚至可以绕过此// +build
工具要求。
例如,阅读misc/cgo/gmp或misc/cgo/stdio(某些文件包含// +build ignore
)