【问题标题】:Writing go programs like node.js apps without go path编写没有 go 路径的 go 程序,如 node.js 应用程序
【发布时间】:2017-04-28 18:40:46
【问题描述】:

在学习了 go 的基础知识后,我意识到我需要这个 gocode 根目录来导出为 GOPATH,我宁愿简单地拥有一个项目文件夹,我可以将包安装到该文件夹​​中,并从其中运行我的 go 代码,这真的是他们编程的方式吗..谁喜欢这个?

我查看了供应商文件夹选项,但这仍然意味着需要一个 gocode GOPATH 导出,并且供应商目录需要位于该源文件夹结构中。

我希望我的项目成为根,仅此而已。 go lang 怎么可能做不到呢?

是吗?

【问题讨论】:

  • 首先,不要尝试像 NodeJS 那样使用 Go,因为它不像 NodeJS。您是否有某些特殊原因不想按预期使用 Go?
  • 因为我希望能够拥有一个项目文件夹,成为该项目的根目录,而不是使用全球 Go 语言特定的根文件夹。好像有限制?
  • 以什么方式限制?如果您担心依赖管理,可以使用 vendoring(内置功能或众多第三方工具之一)。
  • 我必须将我的项目放在根 go 文件夹中,我不想这样做,可以不这样做吗?
  • 有可能,通过根据您正在从事的项目更改您的 gopath,但我无法想象这是值得的。您可以选择您的工作区路径,并且每个项目都可以位于该目录下的单独路径中。这与拥有一个“项目”目录相同,您可以在其中签出所有存储库,您只需使用环境变量告诉 Go 它在哪里。

标签: go


【解决方案1】:

是的。你需要设置你的 GOPATH,你所有的 go-code、-binaries、-packages 等都将放在这个文件夹中。您可以在$GOPATH/src 的根目录下创建一个文件夹,例如$GOPATH/src/myapp,然后在此文件夹中创建一个文件。示例 myapp.go

package main

import fmt
func main() {
    fmt.Print("My app")
}

使用go install $GOPATH/src/myapp/myapp.go 编译它并使用$GOPATH/bin/myapp 运行它。

【讨论】:

  • 但是我要提一下,go 使用了重用包的想法,并且以这种方式严重依赖 git。因此,您将在项目中使用的许多包也将存储在src-文件夹中。如果你打算使用 git,我建议你使用 go-convention。