Win10搭建Go语言环境

最近想学学Go语言,就在笔记本上配置了Go的环境。 
本人的运行环境为:Windows 10 1709

1.下载安装包

到官网下载安装包,官网网址为:Go安装包下载地址 
现在Go的最新版本为1.9.2,官网给出了Windows、Linux跟MacOS的安装包和源码。Windows平台提供了.msi安装文件和.zip压缩包,本人图方便用的是.msi安装包。 

2.安装

下载完后双击安装包即可安装,默认的下载路径是 C:\Go,可以根据自己的喜好更改安装目录,本人安装到D盘。选定安装目录后根据提示一步一步走下去就可以顺利安装了。

安装好后打开PowerShell,输入 go version,若出现下图提示则说明安装成功:

3.环境变量

虽说安装包会自动添加环境变量,但是默认的Go工作空间C盘,个人不是很喜欢,所以要重新配置一下。 
主要是配置两个环境变量:GOROOT和GOPATH。

GOROOT:Go的安装目录 
GOPATH:作为编译后二进制的存放目的地和import包时的搜索路径,不要设置为GO的安装目录。

GOPATH下包含三个目录: bin、pkg、src。

  1. bin:主要存放编译后的可执行文件;
  2. pkg:用于存放编译好的库文件, 主要是*.a文件;
  3. src:主要存放go的源文件。

在环境变量中添加 GOROOT,值为 go 的安装目录:

在环境变量中添加 GOPATH:

以上步骤完成后在path中添加%GOROOT%\bin,%GOPATH%\bin:

以上步骤完成后重启Powershell,输入go env,会出现以下提示:

至此Go语言环境便搭建完成。

打赏

You may also like...

17 Responses

  1. 小学僧说道:

    站长您好,请问下,我想在vps的debian系统上安装caddy,但是照着这个教程搞不定,卡在「手动添加$GOPATH」这里,我配置了go的环境变量后,按下面的方法编译caddy,始终编译不成功,站长你可以帮忙看看吗?谢谢:

    Caddy是基于Go实现的服务器后端,首先安装Go,以及版本管理工具Git:
    sudo apt-get update
    sudo apt-get install golang git
    从GitHub获取最新版本的Caddy。 Caddy的安装可能在后续版本发生改变,具体请参看Caddy的官方wiki

    go get github.com/mholt/caddy/caddy
    go get github.com/caddyserver/builds
    Go的安装路径因发行版而异,$GOPATH默认值一般为用户或root主文件夹下的/go。如果安装时未配置,注意根据实际情况手动添加$GOPATH。

    禁用数据反馈:Caddy默认启用数据反馈,如需禁用,打开文件
    nano $GOPATH/src/github.com/mholt/caddy/caddy/caddymain/run.go
    修改最后一行为
    const enableTelemetry = false
    然后进行编译
    cd $GOPATH/src/github.com/mholt/caddy/caddy
    go run build.go

    2.2 将Caddy安装为服务
    首先将编译好的二进制文件拷贝到用户的二进制文件夹
    sudo cp $GOPATH/bin/caddy /usr/local/bin/

    • Wayde说道:

      你好,其实我也刚学go语言不久,你编译的时候报的什么错误呢,我一会开debian虚拟机试试

      • 小学僧说道:

        我编译的时候好像没看到有错(我是新手,很多东西看不懂),但是却看不到有东西编译出来。执行这一步的时候:
        2.2 将Caddy安装为服务
        首先将编译好的二进制文件拷贝到用户的二进制文件夹
        sudo cp $GOPATH/bin/caddy /usr/local/bin/

        会提示找不到caddy,我觉得是没有编译成功,不知道是不是我环境变量没有配置正常还是怎么了,我弄了一下午都找不到原因,所以搜了一下就来到站长这里求助了。

        • Wayde说道:

          你的环境变量应该是正确的吧,如果不正确的话应该不会有编译过程,可以看看/etc/profile文件中的环境变量确定一下
          主要是这两项目,特别是goroot中的路径确定一下,是不是你安装golang的路径
          export GOROOT=/usr/local/go
          export PATH=GOROOT/bin:PATH

          • 小学僧说道:

            这是我执行完下面两行代码,然后用go env查看到的信息,还没有设置环境变量,环境变量应该怎么设置才对呢????:
            sudo apt-get update
            sudo apt-get install golang git

            显示:
            GOARCH=”amd64″
            GOBIN=””
            GOEXE=””
            GOHOSTARCH=”amd64″
            GOHOSTOS=”linux”
            GOOS=”linux”
            GOPATH=””
            GORACE=””
            GOROOT=”/usr/lib/go-1.7″
            GOTOOLDIR=”/usr/lib/go-1.7/pkg/tool/linux_amd64″
            CC=”gcc”
            GOGCCFLAGS=”-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build735090305=/tmp/go-build -gno-record-gcc-switches”
            CXX=”g++”
            CGO_ENABLED=”1″

  2. 小学僧说道:

    if [ “id -u” -eq 0 ]; then
    PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”
    else
    PATH=”/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games”
    fi
    export PATH

    并没有GOPATH,是添加在PATH后面吗?

    • Wayde说道:

      你的环境文件怎么只有这么一点儿,全复制过来了吗,如果只有这么多可能你安装时候的自动配置不在全局环境变量里,而在用户根目录下的.bash_profile里

      • 小学僧说道:

        if [ “id -u” -eq 0 ]; then
        PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”
        else
        PATH=”/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games”
        fi
        export PATH

        if [ “${PS1-}” ]; then
        if [ “${BASH-}” ] && [ “$BASH” != “/bin/sh” ]; then
        # The file bash.bashrc already sets the default PS1.
        # PS1=’\h:\w\$ ‘
        if [ -f /etc/bash.bashrc ]; then
        . /etc/bash.bashrc
        fi
        else
        if [ “id -u” -eq 0 ]; then
        PS1=’# ‘
        else
        PS1=’$ ‘
        fi
        fi
        fi

        还有一段fi截不到,不过就这些了,至于你说的.bash_profile好像没这个文件,你的debian9难道不是这样的吗?

        • Wayde说道:

          我的root目录下还有个.bash_profile文件,那就不管用户环境变量了吧,直接在你刚才那个位置修改成这样
          export GOROOT=”/usr/lib/go-1.7″
          export GOPATH=”/usr/local/golang”
          export PATH=”$PATH:$GOPATH”
          保存后执行
          source /etc/profile
          就行啦

          • 小学僧说道:

            export GOROOT=”/usr/lib/go-1.7″
            export GOPATH=”/usr/local/golang”
            export PATH=”$PATH:$GOPATH”

            我把你这三个去掉了双引号粘贴进去,然后执行go get github.com/mholt/caddy/caddy 提示:permission denied,
            然后使用sudo go get github.com/mholt/caddy/caddy 提示:$GOPATH not set.

            • Wayde说道:

              permission denied可能是权限不足,切换到root用户了没,你的go env环境变量看上去也是没问题的

              • 小学僧说道:

                切换到root后,运行go get github.com/mholt/caddy/caddy 好像有报错:

                github.com/mholt/caddy/vendor/github.com/xenolf/lego/challenge/tlsalpn01

                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/challenge/tlsalpn01/tls_alpn_challenge_server.go:90: undefined: http.ErrServerClosed

                github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns

                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/client.go:489: undefined: time.Until
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/dnssec_keyscan.go:295: undefined: strings.Builder
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/msg_helpers.go:144: base32.HexEncoding.WithPadding undefined (type *base32.Encoding has no field or method WithPadding)
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/msg_helpers.go:144: undefined: base32.NoPadding
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/msg_helpers.go:270: undefined: strings.Builder
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/serve_mux.go:43: undefined: strings.Builder
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/types.go:422: undefined: strings.Builder
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/types.go:495: undefined: strings.Builder
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/types.go:505: undefined: strings.Builder
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/types.go:517: undefined: strings.Builder
                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/xenolf/lego/vendor/github.com/miekg/dns/types.go:422: too many errors

                github.com/mholt/caddy/vendor/github.com/lucas-clemente/quic-go/vendor/github.com/bifurcation/mint

                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/lucas-clemente/quic-go/vendor/github.com/bifurcation/mint/timer.go:82: undefined: time.Until

                github.com/mholt/caddy/vendor/github.com/lucas-clemente/quic-go/internal/utils

                /usr/local/golang/src/github.com/mholt/caddy/vendor/github.com/lucas-clemente/quic-go/internal/utils/timer.go:34: undefined: time.Until

  3. 小学僧说道:

    GOARCH=”amd64″
    GOBIN=””
    GOEXE=””
    GOHOSTARCH=”amd64″
    GOHOSTOS=”linux”
    GOOS=”linux”
    GOPATH=”/usr/local/golang”
    GORACE=””
    GOROOT=”/usr/lib/go-1.7″
    GOTOOLDIR=”/usr/lib/go-1.7/pkg/tool/linux_amd64″
    CC=”gcc”
    GOGCCFLAGS=”-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build032350123=/tmp/go-build -gno-record-gcc-switches”
    CXX=”g++”
    CGO_ENABLED=”1″

    这是 go env显示

发表评论

%d 博主赞过: