一尘不染

为了正确使用软件包,如何安排目录,文件名,单元测试文件?

go

我的源文件树是这样的:

/src
  /pkg
    /foo
      foo.go
      foo_test.go

内部foo.go

package foo

func bar(n int) {
    ...
}

内部foo_test.go

package foo

func testBar(t *testing.T) {
    bar(10)
    ...
}

我的问题是:

  1. 软件包名称与目录名称,源文件名称相关吗?
  2. 如果软件包只有一个源文件,是否需要将其放在目录中?
  3. 我应该foo.gofoo_test.go放在同一包装中吗?
  4. 在中foo_test.go,因为它与相同foo.go,所以我没有导入foo。但是当我foo_test.go用6g 编译时,它说bar() is undefined。我该怎么办?

阅读 191

收藏
2020-07-02

共1个答案

一尘不染

1-语言规范指出:

共享相同PackageName的一组文件构成了一个包的实现。一个实现可能要求包的所有源文件都驻留在同一目录中。

因此,似乎对文件/目录的命名没有要求,但是将构成一个包的所有文件放在一个目录中会更安全。

2-显然,该文件必须位于某个目录中。我假设您的意思是“ 我应该将其放在src的子目录中 吗?”
根据以上引用,在我看来,src如果您确实愿意,可以直接将所有文件都放入。

3-是的

4-使用 go test

2020-07-02