一尘不染

组织多文件Go项目

go

在开发过程中组织Go项目的标准方法是什么?

我的项目是一个包mypack,所以我想我将所有.go文件放在一个mypack目录中。

但是,然后,我想在开发过程中对其进行测试,因此至少需要一个声明该main包的文件,以便我可以go run trypack.go

我应该如何组织呢?go install mypack每次尝试都需要做吗?


阅读 399

收藏
2020-07-02

共1个答案

一尘不染

我建议阅读有关如何编写Go代码的页面

它记录了如何以gobuild友好的方式构建项目以及如何编写测试。使用该main程序包不必进行cmd测试。它们可以简单地被TestX命名为每个程序包的一部分,然后gotest发现它们。

现在,随着Go1的发布,问题中该链接中建议的结构有些过时了,您不再需要在pkg目录下放置目录src。仅有3个与规范相关的目录是GOPATH根目录中的3个目录:bin,pkg,src。在src之下,您可以简单地放置您的项目mypack,并且在其下是所有.go文件,包括mypack_test.go

go build 然后将其构建到根级别pkg和bin中。

因此,您的GOPATH可能如下所示:

~/projects/
    bin/
    pkg/
    src/
      mypack/
        foo.go
        bar.go
        mypack_test.go

export GOPATH=$HOME/projects

$ go build mypack
$ go test mypack

更新:从> = Go1.11开始,模块系统现在已成为工具的标准部分,并且GOPATH概念已接近过时。

2020-07-02