一尘不染

组织多文件 Go 项目

go

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

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

但是,我想在开发过程中测试它,所以我至少需要一个声明main包的文件,这样我才能做到go run trypack.go

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


阅读 151

收藏
2021-11-02

共1个答案

一尘不染

它记录了如何以go build友好的方式构建项目,以及如何编写测试。测试不需要是使用main包的 cmd 。它们可以简单地将 TestX 命名函数作为每个包的一部分,然后go test会发现它们。

随着 Go 1 的发布,您问题中该链接中建议的结构有点过时了。您不再需要pkgsrc. 只有 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

更新:从 >= Go 1.11 开始,模块系统现在是工具的标准部分,GOPATH 概念即将过时。

2021-11-02