当前位置: 首页 > 面试题库 >

有人可以解释为什么GOPATH很方便以及通常应如何使用吗?

史昱
2023-03-14
问题内容

我是Go编程语言的新手,每个教程都从将GOPATH设置为当前项目文件夹开始。

我想念什么吗?程序员真的应该在cd进入新的Go项目文件夹时手动设置GOPATH 吗?我已经阅读了一些有关GOPATH的常见问题解答条目,但仍然无法解决。

那为什么GOROOT存在呢?目的是什么?

是否有任何自动工具来检测当前目录是否是Go项目的根文件夹(例如通过某个隐藏文件)并自动将GOPATH更改为该目录?

谢谢你,真的有任何建议

ps。例如,我开发了完全脱节的Go项目A,B和C,它们应该生活在单个“工作区”环境中吗?我猜不是,但是我该如何使用GOPATH和GOROOT?


问题答案:

的目标GOPATH是将所有软件包集中到一个公共工作空间中。它本身并不是一个真正的新概念(例如,以Java
Classpath为例),但是由于不支持软件包版本控制,因此Go的使用大大简化了。

GOPATH输入新的项目文件夹时,不应手动设置Go程序员。每个项目文件夹应被认为是一个单独的程序包,并且与GOPATH其他程序包一起驻留,因此GOPATH应仅设置一次。教程首先要设置GOPATH,以便将教程工作区与其他任何内容隔离开来(或者只是假设用户尚未设置GOPATH)。

GOROOT被设置为向Go程序员提供标准软件包,您无需对其进行任何操作。简而言之,只有一个规则GOROOT:永远不要触摸它。不要在其中安装任何东西,不要修改标准软件包等。

我不知道用于在当前目录中检测Go项目的工具,但是创建它应该不会很复杂。

您如何处理不同的项目取决于您。Go的方式是将每个项目作为包放入$GOPATH/src目录中,然后从那里进行所有操作。因为我不太喜欢,所以将我定义GOPATH$HOME/.go。然后,将每个项目放在其他位置(在计算机中的任何位置)的专用目录中,并将项目目录符号链接到我的$GOPATH/src目录中。然后,我可以使用每个Go工具链命令(例如go build myproject),将该项目用作另一个软件包的包,等等。



 类似资料:
  • 问题内容: 有两种通过play框架创建海关标签的方法。 通过在app / view / tags中定义一个Groovy模板 通过在类中直接扩展FastTag直接在纯Java中 没有最新的文件。 问题答案: 因此,类似于JavaExtensions通过扩展JavaExtensions类的工作方式,要创建FastTag,您需要创建一个扩展FastTags的类。您要作为标记执行的每个方法都必须符合以下方

  • 问题内容: 在输出中引发以下错误 删除修复问题。我的问题是为什么会这样? 问题答案: 开始运行时过程时,Go Development Server (在App Engine Go SDK中)正在读取helloworld的中找到的单行响应。 这会修改中的标志;因此,HTTP运行时会尝试读取行以指示要侦听哪个端口。 阅读启动过程文件中预期的单行响应。[…] START_PROCESS_FILE版本使用

  • 问题内容: 情况1:这不会引起?。谁能告诉我为什么这不会导致ConcurrentModificationException。 情况2:这是由于我尝试访问AsyncThread中的线程不安全的人员列表。我可以使我的“人员列表”实现是线程安全的,并且应该可以运行。 谁能解释我到底发生了什么。我无法理解这是如何解决问题的。 案例2是否将实现从更改为推荐? 添加例外: 05-28 20:34:21.073

  • 问题示例的图像 在这两个节点上都调用 .intersects 并返回 true。我使用getBoundsInParent()来表示两者。有人可以帮我解决这个问题吗?我觉得这与getBoundsInParent()没有返回圆圈的准确边界有关,而是idk。谢谢

  • 问题内容: 越来越多地使用Python,并且不断看到在不同文件中设置的变量。有人可以解释这是什么吗? 问题答案: 这是该模块的公共对象的列表,由解释import 。它覆盖了默认的内容,即隐藏以下划线开头的所有内容。

  • 问题内容: 抱歉,如果我有点模棱两可,但是我试图了解使用Node.js而不是其他服务器端语言的真正优势。 我是JavaScript爱好者,所以我可能会玩Node.js,但我想知道是否应该在项目中使用它。 问题答案: 在V8上发生了异步非阻塞I / O 构建。 因此,我们拥有了Google JavaScript解释器V8的所有性能提升。由于JavaScript性能竞赛尚未结束,您可以期望Google