GOPATH和GOROOT的值应该是什么?

GOPATH和GOROOT的值应该是什么?,go,gopath,Go,Gopath,我正在尝试这样安装: $ goinstall github.com/ha/doozer 我得到这些错误 GOPATH讨论如下: GOPATH环境变量 GOPATH可以设置为以冒号分隔的路径列表,其中 可以找到代码、包对象和可执行文件 设置一个GOPATH以使用goinstall构建和安装您自己的代码和 Go树之外的外部库(并避免写入 生成文件) 并讨论了GOROOT: $GOROOTGo树的根,通常是$HOME/Go。这默认为 运行all.bash的目录的父目录。如果你选择不 设置$GOROO

我正在尝试这样安装:

$ goinstall github.com/ha/doozer
我得到这些错误


GOPATH
讨论如下:

GOPATH
环境变量

GOPATH
可以设置为以冒号分隔的路径列表,其中 可以找到代码、包对象和可执行文件

设置一个
GOPATH
以使用goinstall构建和安装您自己的代码和 Go树之外的外部库(并避免写入 生成文件)

并讨论了
GOROOT

$GOROOT
Go树的根,通常是
$HOME/Go
。这默认为 运行
all.bash
的目录的父目录。如果你选择不 设置
$GOROOT
,必须在以下情况下运行gomake而不是make或gmake 使用传统的makefile开发Go程序


GOPATH
讨论如下:

GOPATH
环境变量列出了查找Go代码的位置。在…上 在Unix中,该值是以冒号分隔的字符串。在Windows上,该值为 以分号分隔的字符串。在计划9中,该值是一个列表

GOPATH
必须设置为在 标准围棋树

GOROOT
在以下章节中讨论:

Go二进制发行版假定它们将安装在
/usr/local/go
(或Windows下的
c:\go
),但可以安装 将工具转到其他位置。在这种情况下,必须设置
GOROOT
环境变量,指向它所在的目录 安装

例如,如果安装了“转到主目录”,则应添加 以下命令用于
$HOME/.profile

export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
注意:
GOROOT
只能在安装到自定义位置时设置


(更新版本。)

我阅读了《go help gopath》文档,仍然感到非常困惑,但在另一个go文档页面上发现了这个小金块:

GOPATH环境变量指定工作区的位置。它可能是开发Go代码时需要设置的唯一环境变量

如上所述:

GOPATH环境变量指定用户的位置 工作空间

对于Windows,这对我有效(在Ms dos窗口中):

这将创建一个GOPATH变量,Ms dos在按如下方式使用时可识别该变量:

cd %GOPATH%

以下是我的简单设置:

directory for go related things: ~/programming/go
directory for go compiler/tools: ~/programming/go/go-1.4
directory for go software      : ~/programming/go/packages
GOROOT、GOPATH、PATH设置如下:

export GOROOT=/home/user/programming/go/go-1.4
export GOPATH=/home/user/programming/go/packages
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
因此,简言之:

GOROOT用于go安装中的编译器/工具。

GOPATH用于您自己的go项目/第三方库(使用“go get”下载)。

如果您使用的是发行版go,您应该指向包含文件的位置,例如:

$ rpm -ql golang | grep include
/usr/lib/golang/include

(这适用于Fedora 20)

GOPATH不应指向Go安装,而应指向您的工作区(请参阅)。无论何时使用go-get或go-install安装某个包,它都会在GOPATH中着陆。这就是为什么它警告您,您绝对不希望来自internet的随机软件包被转储到您的官方安装中。

首次运行
go-env

如果您发现go未安装,可以通过
自制
或通过软件包和/或其他方式安装。
如果看到输出,则安装了
Go

它显示所有已设置和未设置的环境

如果您看到
GOROOT
为空:

  • 运行
    哪个go
    (在我的计算机上:
    /usr/local/go/bin/go
  • 然后像这样导出
    export GOROOT=/usr/local/go
  • 如果您看到
    GOPATH
    为空:

  • 在计算机上的任何位置为go项目创建任何目录(以我为例):
    ~/go\u projects

  • 然后导出GOPATH=~/GO\u项目
  • 从go 1.8(2017年第2季度)开始,GOPATH将默认设置为$HOME/go

    请参见和Rob Pike的评论:

    $HOME/go
    它将是。
    没有单一的最佳答案,但这是简短而甜蜜的,只有当
    $HOME/go
    已经存在时,选择该名称才可能是一个问题,这只会让已经安装go并理解
    GOPATH
    的专家感到高兴


    关于
    GOROOT
    ,Go 1.9将自动将其设置为安装路径。
    即使您安装了多个Go,调用1.9.x one也会将
    GOROOT
    设置为
    /path/to/Go/1.9
    (之前,如果未设置,则假定默认路径为
    /usr/local/Go
    c:\Go

    见:

    现在将使用调用它的路径来尝试定位Go install树的根目录
    这意味着,如果将整个Go安装移动到一个新位置,
    Go工具应继续正常工作

    这可以通过在环境中设置
    GOROOT
    来覆盖,这只能在异常情况下执行。
    请注意,这不会影响测试结果,测试结果将继续报告原始安装位置;这可能在以后的版本中修复


    在osx中,我安装了brew,以下是适合我的设置

    GOPATH="$HOME/my_go_work_space" //make sure you have this folder created
    
    GOROOT="/usr/local/Cellar/go/1.10/libexec"
    
    我不得不附加

    export GOROOT=/usr/local/Cellar/go/1.10.1/libexec
    

    对于我在Mac OS X上的~/.bash_配置文件,还有一种情况是,当我们使用go时,它会编译所有go文件


    假设我们有一个文件main.go,后来我们将当前文件更改为main_old.go,然后添加了新的main.go文件。然后,当我们构建应用程序时,所有go文件都将被编译。因此,发生的错误可能是由于某些其他go文件中的编译错误。

    一旦安装了go lang,GOROOT就是安装的根目录

    当我在Windows C:\目录中分解Go-Lang二进制文件时,我的GOROOT应该是C:\ Go。 如果我
    GOPATH="$HOME/my_go_work_space" //make sure you have this folder created
    
    GOROOT="/usr/local/Cellar/go/1.10/libexec"
    
    export GOROOT=/usr/local/Cellar/go/1.10.1/libexec
    
     GOROOT = C:\go
    
     GOPATH = C:\Users\<xyz>\GO_Workspace
    
    go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'
    
    setx GOPATH C:\mynewgopath
    
    GOROOT="/usr/local/go" --> all binaries file core go
    GOPATH="/Applications/proyectos/go" --> the route to workspace (custom workspace)
    
    GOROOT=$HOME/.local # your go executable is in $GOROOT/bin
    GOPATH=$HOME/.gopath
    PATH=$GOROOT/bin:$GOPATH/bin:$PATH