教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang ide 环境搭建_Go语言环境搭建详解(2020版)

golang ide 环境搭建_Go语言环境搭建详解(2020版)

发布时间:2022-02-12   编辑:jiaochengji.com
教程集为您提供golang ide 环境搭建,Go语言环境搭建详解(2020版)等资源,欢迎您收藏本站,我们将为您提供最新的golang ide 环境搭建,Go语言环境搭建详解(2020版)资源

最近写了很多Go语言的原创文章,其中Go语言实战系列30篇,近15W字,还有最近更新的Go经典库系列,不过通过大家的咨询来看,还是想要一些入门的知识,这一篇文章写于2017年初,这3年多Go更新了很多版本,所以需要更新下这篇文章。

<blockquote>

提示:本文基于Go语言最新版 go1.15.3 写成。

</blockquote>

有读者来信(微信公众号消息)说能不能写一篇关于Go语言环境的配置搭建,这样对于想学Go语言的可以快速的配置起来一个环境。这个的确是我忽略了,按照我写书的逻辑,也是先有环境搭建,才能有语言功能介绍,这个直接把Go语言的开发环境搭建等配置跳过去实在不应该,所以这篇特意针对Go语言的开发环境搭建、配置、编辑器选型、不同平台程序生成等做了详细的介绍。

<h2><span style="font-weight:bold;">下载</span></h2>

要搭建Go语言开发环境,我们第一步要下载go的开发工具包,目前最新稳定版本是go1.15.3。Go为我们所熟知的所有平台架构提供了开发工具包,比如我们熟知的Linux、Mac和Windows,其他的还有FreeBSD等。

我们可以根据自己的机器操作系统选择相应的开发工具包,比如你的是Windows 64位的,就选择windows-amd64的工具包;是Linux 32位的就选择linux-386的工具包。可以自己查看下自己的操作系统,然后选择,Mac的现在都是64位的,直接选择就可以了。

开发工具包又分为安装版和压缩版。安装版是Mac和Windows特有的,他们的名字类似于:

<ul><li>

go1.15.3.darwin-amd64.pkg

</li><li>

go1.15.3.windows-386.msi

</li><li>

go1.15.3.windows-amd64.msi

</li></ul>

安装版,顾名思义,双击打开会出现安装向导,让你选择安装的路径,帮你设置好环境比安康等信息,比较省事方便一些。

压缩版的就是一个压缩文件,可以解压得到里面的内容,他们的名字类似于:

<ul><li>

go1.15.3.darwin-amd64.tar.gz

</li><li>

go1.15.3.linux-386.tar.gz

</li><li>

go1.15.3.linux-amd64.tar.gz

</li><li>

go1.15.3.windows-386.zip

</li><li>

go1.15.3.windows-amd64.zip

</li></ul>

压缩版我们下载后需要解压,然后自己移动到要存放的路径下,并且配置环境变量等信息,相比安装版来说,比较复杂一些,手动配置的比较多。

根据自己的操作系统选择后,就可以下载开发工具包了,Go语言的官方下载地址是 https://golang.org/dl/ 可以打开选择版本下载,如果该页面打不开,或者打开了下载不了,可以通过Golang的国内网站 https://golang.google.cn/dl/ 下载。

<h2><span style="font-weight:bold;">Linux下安装</span></h2>

我们以Ubuntu 64位为例进行演示,CentOS等其他Linux发行版大同小异。

下载go1.15.3.linux-amd64.tar.gz后,进行解压,你可以采用自带的解压软件解压,如果没有可以在终端行使用tar命令行工具解压,我们这里选择的安装目录是<code>/usr/local/go</code>,可以使用如下命令:

<pre class="has"><code>tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz
</code></pre>

如果提示没有权限,在最前面加上<code>sudo</code>以root用户的身份运行。运行后,在<code>/usr/local/</code>下就可以看到go目录了。如果是自己用软件解压的,可以拷贝到/usr/local/go下,但是要保证你的go文件夹下是bin、src、doc等目录,不要go文件夹下又是一个go文件夹,这样就双重嵌套了。

然后就要配置环境变量了,Linux下有两个文件可以配置,其中<code>/etc/profile</code>是针对所有用户都有效的;<code>$HOME/.profile</code>是针对当前用户有效的,可以根据自己的情况选择。

针对所有用户的需要重启电脑才可以生效;针对当前用户的,在终端里使用source命令加载这个<code>$HOME/.profile</code>即可生效。

<pre class="has"><code>source ~/.profile
</code></pre>

使用文本编辑器比如VIM编辑他们中的任意一个文件,在文件的末尾添加如下配置保存即可:

<pre class="has"><code>export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
</code></pre>

其中GOROOT环境变量表示我们GO的安装目录,这样其他软件比如我们使用的Go开发IDE就可以自动的找到我们的Go安装目录,达到自动配置Go SDK的目的。

第二句配置是把<code>/usr/local/go/bin</code>这个目录加入到环境变量PATH里,这样我可以在终端里直接输入go等常用命令使用了,而不用再加上<code>/usr/local/go/bin</code>这一串绝对路径,更简洁方便。

以上配置好之后,我们打开终端,输入如下命令,就可以看到go的版本等信息了。

<pre class="has"><code>➜  ~ go version
go version go1.15.3 linux/amd64
</code></pre>

这就说明我们已经安装go成功了,如果提示go这个命令找不到,说明我们配置还不对,主要在PATH这个环境变量,仔细检查,直到可以正常输出为止。

<h2><span style="font-weight:bold;">Mac下安装</span></h2>

Mac分为压缩版和安装版,他们都是64位的。压缩版和Linux的大同小异,因为Mac和Linux都是基于Unix,终端这一块基本上是相同的。

压缩版解压后,就可以和Linux一样放到一个目录下,这里也以<code>/usr/local/go/</code>为例。在配置环境变量的时候,针对所有用户和Linux是一样的,都是<code>/etc/profile</code>这个文件;针对当前用户,Mac下是<code>$HOME/.bash_profile</code>,其他配置都一样,包括编辑sudo权限和生效方式,最后在终端里测试:

<pre class="has"><code>➜  ~ go version
go version go1.15.3 darwin/amd64
</code></pre>

Mac安装版下载后双击可以看到安装界面,按照提示一步步选择操作即可。安装版默认安装目录是<code>/usr/local/go</code>,并且也会自动的把<code>/usr/local/go/bin</code>目录加入到PATH环境变量中,重新打开一个终端,就可以使用<code>go version</code>进行测试了,更快捷方便一些。

<h2><span style="font-weight:bold;">Windows下安装</span></h2>

Windows也有压缩版和安装版,又分为32和64位以供选择,不过目前大家都是64位,选择这个更好一些。

Window的压缩版是一个ZIP压缩包,下载后使用winrar等软件就可以解压,解压后要选择一个存放目录,比如<code>c:\Go</code>下,这个<code>c:\Go</code>就是Go的安装目录了,他里面有bin、src、doc等目录。

然后就是环境变量的配置,Window也和Linux一样分为针对所有用户的系统变量,和针对当前用户的用户变量设置,可以自行选择,比如系统变量,针对所有用户都有效。

以Window 7为例,右击我的电脑->属性会打开系统控制面板,然后在左侧找到<code>高级系统设置</code>点击打开,会在弹出的界面最下方看到<code>环境变量</code>按钮,点击它,就可以看到环境变量配置界面了。上半部分是用户变量配置,下半部分是系统变量配置。

我们在系统变量里点击新建,变量名输入GOROOT,变量值是我们刚刚安装的go路径<code>c:\Go</code>,这样就配置好了GO目录的安装路径了。

然后修改PATH系统变量,在变量值里添加<code>%%GOROOT\bin</code>路径,和其他PATH变量以;(分号,Linux下是冒号)分割即可。这样我们就可以在CMD里直接输入go命令使用了。

打开我们的终端,输入<code>go version</code>测试下,好了的话就可以看到输出的信息了。

Window的安装版相比来说就比较简单一些,双击就可以按照提示一步步安装,默认安装路径是<code>c:\Go</code>,并且会配置好PATH环境变量,可以直接打开CMD终端使用。

<h2><span style="font-weight:bold;">GOPATH目录</span></h2>

自动Golang采用Module的方式管理项目后,GOPATH目录已经不是那么重要了,目前主要用来存放依赖的Module库,生成的可执行文件等。GOPATH环境变量的配置参考上面的安装Go,配置到<code>/etc/profile</code>或者Windows下的系统变量里。

这个目录我们可以根据自己的设置指定,比如我的Mac在<code>$HOME/code/go</code>下,Window的可以放到d:\code\go下等。该目录下有3个子目录,他们分别是:

<pre class="has"><code>├── bin
├── pkg
└── src
</code></pre> <ul><li>

bin文件夹存放<code>go install</code>命名生成的可执行文件,可以把<code>$GOPATH/bin</code>路径加入到PATH环境变量里,就和我们上面配置的<code>$GOROOT/bin</code>一样,这样就可以直接在终端里使用我们go开发生成的程序了。

</li><li>

pkg文件夹是存在go编译生成的文件。

</li><li>

src存放的是非Go Module项目源代码。

</li></ul><h2><span style="font-weight:bold;">go项目工程结构</span></h2>

配置好工作环境后,就可以编码开发了,在这之前,我们看下go的通用项目结构,这里的结构主要是源代码相应的资源文件存放目录结构。

基于Go Module,你可以在任意位置创建一个Go项目,而不再像以前一样局限在<code>$GOPATH/src</code>目录下。假设我要创建一个tour项目,它位于<code>~/Desktop/tour</code>目录下,那我现在打开终端,CD到<code>~/Desktop/tour</code>目录下,输入如下命令即可创建一个Go Module工程。

<pre class="has"><code>➜  tour go mod init flysnow.org/tour
go: creating new go.mod: module flysnow.org/tour
</code></pre>

当前生成的Go Module工程只有一个<code>go.mod</code>文件,它的内容如下所示:

<pre class="has"><code>module flysnow.org/tour

go 1.15
</code></pre>

其中<code>module flysnow.org/tour</code>代表该项目的path,也就是最顶层的package,<code>go 1.15</code>表示该项目需要go 1.15版本及其以上才能编译运行。

<code>go.mod</code>文件是Go语言工具链用于管理Go语言项目的一个配置文件,我们不用手动修改它,Go语言的工具链会帮我们自动更新,比如当我们的项目添加一个新的第三方库的时候。

使用第三方库,也就是使用第三方库里的包,那么我们如何引用一个包呢,使用的就是go语言的import关键字,比如:

<pre class="has"><code>import (
    "github.com/gohugoio/hugo/commands"
)
</code></pre>

以上引入的<code>github.com/gohugoio/hugo/commands</code>这个包是属于 <code>github.com/gohugoio/hugo/</code>这个Go Module的。

所以相应的,我们也可以在我们自己的Go Module工程里创建一些包(其实就是子目录),比如我创建了<code>lib1</code>目录,那么它的对应的包就是<code>flysnow.org/tour/lib1</code>,其他包只有通过这个包名才能使用<code>flysnow.org/tour/lib1</code>包中的函数方法等。

<pre class="has"><code>.
├── go.mod
├── lib1
├── lib2
└── main.go
</code></pre>

所以最后你的项目目录类似上面的结构,每个子目录都是一个包,子目录里可以放go文件。

<h2><span style="font-weight:bold;">Hello World</span></h2>

好了,有了<code>tour</code>项目,就可以演示下Go语言版本的Hello World了,在<code>tour</code>根目录下的<code>main.go</code>(如没有这个文件,就新建一个)文件中,添加如下Go代码。

<pre class="has"><code>package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World")
}
</code></pre>

Go版本的Hello World非常简单。在<code>~/Desktop/tour</code>目录下运行<code>go run main.go</code>命令就可以看到打印的输出<code>Hello World</code>,下面解释下这段代码。

1.package 是一个关键字,定义一个包,和Java里的package一样,也是模块化的关键。

<ol start="2"><li>

main包是一个特殊的包名,它表示当前是一个可执行程序,而不是一个库。

</li><li>

import 也是一个关键字,表示要引入的包,和Java的import关键字一样,引入后才可以使用它。

</li><li>

fmt是一个包名,这里表示要引入fmt这个包,这样我们就可以使用它的函数了。

</li><li>

main函数是主函数,表示程序执行的入口,Java也有同名函数,但是多了一个String[]类型的参数。

</li><li>

Println是fmt包里的函数,和Java里的system.out.println作用类似,这里输出一段文字。

</li></ol>

整段代码非常简洁,关键字、函数、包等和Java非常相似,不过注意,go是不需要以;(分号)结尾的。

<h2><span style="font-weight:bold;">安装程序</span></h2>

安装的意思,就是生成可执行的程序,以供我们使用,为此go为我们提供了很方便的install命令,可以快速的把我们的程序安装到<code>$GOAPTH/bin</code>目录下。在<code>~/Desktop/tour</code>目录下运行如下代码即可安装。

<pre class="has"><code>➜ go install flysnow.org/tour
</code></pre>

打开终端,运行上面的命令即可,install后紧跟全路径的包名。然后我们在终端里运行<code>tour</code>就看到打印的Hello World了。

<pre class="has"><code>➜  ~ tour
Hell World
</code></pre> <h2><span style="font-weight:bold;">跨平台编译</span></h2>

以前运行和安装,都是默认根据我们当前的机器生成的可执行文件,比如你的是Linux 64位,就会生成Linux 64位下的可执行文件,比如我的Mac,可以使用<code>go env</code>查看编译环境,以下截取重要的部分。

<pre class="has"><code>➜  ~ go env
GOARCH="amd64"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
</code></pre>

注意里面两个重要的环境变量<code>GOOS</code>和<code>GOARCH</code>,其中<code>GOOS</code>指的是目标操作系统,它的可用值为:

<ol><li>

aix

</li><li>

android

</li><li>

darwin

</li><li>

dragonfly

</li><li>

freebsd

</li><li>

illumos

</li><li>

js

</li><li>

linux

</li><li>

netbsd

</li><li>

openbsd

</li><li>

plan9

</li><li>

solaris

</li><li>

windows

</li></ol>

一共支持13种操作系统。<code>GOARCH</code>指的是目标处理器的架构,目前支持的有:

<ol><li>

arm

</li><li>

arm64

</li><li>

386

</li><li>

amd64

</li><li>

ppc64

</li><li>

ppc64le

</li><li>

mips

</li><li>

mipsle

</li><li>

mips64

</li><li>

mips64le

</li><li>

s390x

</li><li>

wasm

</li></ol>

一共支持12种处理器的架构,<code>GOOS</code>和<code>GOARCH</code>组合起来,支持生成的可执行程序种类很多,具体组合参考https://golang.org/doc/install/source#environment。如果我们要生成不同平台架构的可执行程序,只要改变这两个环境变量就可以了,比如要生成linux 64位的程序,命令如下:

<pre class="has"><code>GOOS=linux GOARCH=amd64 go build flysnow.org/tour
</code></pre>

前面两个赋值,是更改环境变量,这样的好处是只针对本次运行有效,不会更改我们默认的配置。

<h2><span style="font-weight:bold;">获取远程包</span></h2>

因为众所周知的原因,在获取远程包之前,我们需要先配置的代理,这里推荐<code>goproxy.io</code>代理,设置命令如下:

<pre class="has"><code>go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
</code></pre>

设置好代理后,就可以使用go提供的一个获取远程包的工具<code>go get</code>来获取远程包了,它需要一个完整的包名作为参数,只要这个完整的包名是可访问的,就可以被获取到,比如我们获取一个CLI的开源库:

<pre class="has"><code>go get -v github.com/spf13/cobra
</code></pre>

就可以下载这个库到我们<code>$GOPATH/pkg/mod</code>目录下了,这样我们就可以像导入其他包一样import了。

特别提醒,go get的本质是使用源代码控制工具下载这些库的源代码,比如git,hg等,所以在使用之前必须确保安装了这些源代码版本控制工具。

如果我们使用的远程包有更新,我们可以使用如下命令进行更新,多了一个<code>-u</code>标识。

<pre class="has"><code>go get -u -v github.com/spf13/cobra
</code></pre> <h2><span style="font-weight:bold;">获取gitlab私有库包</span></h2>

如果是私有的git库怎么获取呢?比如在公司使用gitlab搭建的git仓库,设置的都是private权限的。这种情况下我们可以配置下git,就可以了,在此之前你公司使用的gitlab必须要在7.8之上。然后要把我们http协议获取的方式换成ssh,假设你要获取<code>http://git.flysnow.org</code>,对应的ssh地址为<code>git@git.flysnow.org</code>,那么要在终端执行如下命令。

<pre class="has"><code>git config --global url."git@git.flysnow.org:".insteadOf "http://git.flysnow.org/"
</code></pre>

这段配置的意思就是,当我们使用<code>http://git.flysnow.org/</code>获取git库代码的时候,实际上使用的是<code>git@git.flysnow.org</code>这个url地址获取的,也就是http到ssh协议的转换,是自动的,他其实就是在我们的<code>~/.gitconfig</code>配置文件中,增加了如下配置:

<pre class="has"><code>[url "git@git.flysnow.org:"]
    insteadOf = http://git.flysnow.org/
</code></pre>

然后需要把<code>git.flysnow.org</code>加入<code>GOPRIVATE</code>环境变量中,因为它是你的私有仓库,不需要走<code>GOPROXY</code>代理。

<pre class="has"><code># 设置不走 proxy 的私有仓库,多个用逗号相隔(可选)
go env -w GOPRIVATE=git.flysnow.org
</code></pre>

现在我们就可以使用<code>go get</code>直接获取了,比如:

<pre class="has"><code>go get -v -insecure git.flysnow.org/hello
</code></pre>

仔细看,多了一个<code>-insecure</code>标识,因为我们使用的是http协议, 是不安全的。当然如果你自己搭建的gitlab支持https协议,就不用加<code>-insecure</code>了,同时把上面的<code>url insteadOf</code>换成<code>https</code>的就可以了。

Go还有很多命令行工具可以使用,更多的请参考Go语言实战笔记(二)| Go开发工具

<h2><span style="font-weight:bold;">Go编辑器推荐</span></h2>

Go采用的是UTF-8的文本文件存放源代码,所以原则上你可以使用任何一款文本编辑器,这里推荐几款比较流行的。

对于新手来说,我推荐功能强大的IDE,功能强大,使用方便,比如jetbrains idea golang插件,上手容易,而且它家的IDE都一样,会一个都会了,包括菜单、快捷键等。

值得高兴的是jetbrains针对Go这门语言推出了专用IDE goland,也足以证明go的流行以及jetbrains的重视。goland地址为 https://www.jetbrains.com/go/,可以前往下载使用。

其次可以推荐微软的VS Code,这款编辑器插件强大,快捷键方便,对Go支持的很好,也拥有大量的粉丝。

编辑器只是为了提高开发效率,大家哪个顺手用哪个,不存在谁更NB。

<h2><span style="font-weight:bold;">一些文章推荐</span></h2>

一个就是我的GO语言实战笔记系列,这个可以入门和深入,还有最近写的Go的第三方库介绍和分析,可以让我们快速上手以及了解原理实践。

<ul><li>

Go语言实战笔记(一)| Go包管理

</li><li>

Go语言实战笔记(二)| Go开发工具

</li><li>

Go语言实战笔记(四)| Go 数组

</li><li>

Go语言实战笔记(六)| Go Map

</li><li>

Go语言实战笔记(九)| Go 接口

</li><li>

Go语言实战笔记(十二)| Go goroutine

</li><li>

Go语言实战笔记(二十六)| Go unsafe 包之内存布局

</li><li>

Go语言经典库使用分析(五)| Negroni 中间件(一)

</li><li>

Golang Gin 实战(十三)| 中间件详解看这一篇就够了

</li></ul>

此外,关于Go学习的书等,我这里有一篇知乎比较高的回答,供大家参考https://www.zhihu.com/question/30461290/answer/210414739

到这里,整个Go开发环境就详细介绍完了,不光有环境安装搭建,还有目录结构、常用命令使用等都进行了介绍,这篇文章看完后,已经入门了Go了,剩下的再看看Go的语法和库,就可以很流畅的编写Go程序了。

<blockquote>

本文为原创文章,转载注明出处,欢迎扫码关注公众号<code>flysnow_org</code>或者网站http://www.flysnow.org/,第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。

</blockquote> <figure style="text-align:center;"><figcaption> 扫码关注 </figcaption></figure>
到此这篇关于“golang ide 环境搭建_Go语言环境搭建详解(2020版)”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
初识GO语言以及GO语言安装及环境搭建
go 语言环境搭建
golang ide 环境搭建_Go语言环境搭建详解(2020版)
php运行环境一键搭建
如何快速搭建php mysql开发环境
查看go 安装了哪些包_go语言基础入门(一)
Go语言环境搭建(Window)
Hyperledger Fabric2.2环境搭建(一)——go语言
Go语言环境搭建(Windows版本)2020
运行php需要什么?

[关闭]
~ ~