gpt4 book ai didi

go - 在 go 中将 main 移出存储库根目录

转载 作者:IT王子 更新时间:2023-10-29 02:25:37 26 4
gpt4 key购买 nike

我正在用 go 创建一个项目。由于项目存储库的根目录中已经有很多东西(doc,README.md ...),我希望所有源代码都放在文件夹 src 中,所有测试代码都放在名为测试:

\go
\src
\github.com
\user
\my_project
\src
main.go
some_func.go
\test
test_main.go
test_some_func.go
\doc
README.md

但是我有两个问题:

  • 当我在 my_project 文件夹中时,构建命令不起作用。我必须进入 my_project/src 才能成功运行构建。我想从 my_project 文件夹中进行。如何强制理解 my_project 的源代码在 src 代码中?
  • 然后由 go install 命令生成的可执行文件被命名为 src。如何更改该可执行文件的名称?

最佳答案

I want all the source code to go in a folder src, and all the test code in a folder named test :

Go 有一种组织源代码的方式。不要打这个。这就是系统的工作原理。按照 Go 希望的方式组织代码。不要试图强制 Go 以您在其他语言中学习的方式工作。每种语言都有自己的做事方式。它们都不是“正确的”。与 Java 一样,Go 对您应该做什么有非常具体的想法。那样做。 (这不是关于 Go 是“对”还是 Go 是“错”的争论。Go 就是 Go,它以 Go 的方式做事。)

特别是,您不应该创建另一个“src”目录。 “go”树的顶部已经有一个“src”目录。如果您创建另一个冗余的“src”目录,那么您项目的包名称是“github.com/user/my_project/src”,这可能不是您想要的。

要使可执行文件以您想要的名称命名,请将其放在一个以您想要的名称命名的目录中(可能是“my_project”)。将测试文件与他们测试的文件放在一起。这就是 go 的工作原理。

所以你的树应该是这样的:

\go
\src
\github.com
\user
\my_project
main.go
some_func.go
main_test.go
some_func_test.go
\doc
README.md

尝试做除此之外的事情会一次又一次地失败,“我如何让构建系统做这件事”的问题将不断返回“按照构建系统期望的方式放置你的代码” ”

有关 Go 的期望以及您应该如何组织代码的详细信息,请参阅 GOPATH environment variable在 Command Go 文档中。以这种方式构建系统一段时间后,您将开始看到可以偏离它的地方(比如为测试实用程序创建其他目录,但不是测试用例)。在尝试过标准的 Go 方式之前,不要开始偏离。

关于go - 在 go 中将 main 移出存储库根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com