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

在go中将main移出存储库根目录,go,Go,我正在go中创建一个项目。因为在项目文档的存储库README.md的根目录中已经有很多东西,所以我希望所有的源代码都放在src文件夹中,所有的测试代码都放在test文件夹中: \go \src \github.com \user \my_project \src main.go some_func.go \test test_main.go

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

\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_项目文件夹中时,“生成”命令不起作用。我必须进入my_project/src才能成功运行构建。我想从my_项目文件夹中执行此操作。如何增强go理解my_项目的源代码在src代码中? 然后,go install命令生成的可执行文件名为src。如何更改该可执行文件的名称? 我希望所有源代码都放在src文件夹中,所有测试代码放在test文件夹中:

\go
  \src
    \github.com
      \user
        \my_project
          \src
            main.go
            some_func.go
          \test
            test_main.go
            test_some_func.go
          \doc
          README.md
Go有一种组织源代码的方式。不要与此抗争。这就是系统的工作原理。按照Go希望的方式组织代码。不要试图强迫你按照你用其他语言学习的方式去工作。每种语言都有自己的做事方式。没有一个是正确的。像Java一样,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期望的内容以及应如何组织代码的详细信息,请参阅命令Go文档中的。一旦您以这种方式构建了一段时间的系统,您将开始看到哪里可以偏离它,就像为测试实用程序创建其他目录一样,而不是测试用例。在您尝试过标准方式之前,不要开始偏离方向。

非常感谢。这是我不希望得到的答案,但绝对感谢您花时间回答^^