小编典典

组织一个多文件 Go 项目

all

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

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

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

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


阅读 60

收藏
2022-05-24

共1个答案

小编典典

我建议查看有关如何编写 Go 代码的页面

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

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

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

2022-05-24