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

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

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

下载

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

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

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

  • go1.16.4.darwin-amd64.pkg
  • go1.16.4.windows-386.msi
  • go1.16.4.windows-amd64.msi

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

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

  • go1.16.4.darwin-amd64.tar.gz
  • go1.16.4.linux-386.tar.gz
  • go1.16.4.linux-amd64.tar.gz
  • go1.16.4.windows-386.zip
  • go1.16.4.windows-amd64.zip

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

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

Linux下安装

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

/usr/local/go
sudo/usr/local/
/etc/profile$HOME/.profile
$HOME/.profile

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

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

/usr/local/go/bin/usr/local/go/bin

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

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

Mac下安装

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

/usr/local/go//etc/profile$HOME/.bash_profile
/usr/local/go/usr/local/go/bingo version

Windows下安装

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

c:\Goc:\Go

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

高级系统设置环境变量
c:\Go
%%GOROOT\bin
go version
c:\Go

GOPATH目录

/etc/profile

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

go install

go项目工程结构

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

$GOPATH/src~/Desktop/tour~/Desktop/tour
go.mod
module flysnow.org/tour1.16
go.mod

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

github.com/gohugoio/hugo/commandsgithub.com/gohugoio/hugo/
lib1flysnow.org/tour/lib1flysnow.org/tour/lib1

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

Hello World

tourtourmain.go
~/Desktop/tourgo run main.goHello World

1.package 是一个关键字,定义一个包,和Java里的package一样,也是模块化的关键。 2. main包是一个特殊的包名,它表示当前是一个可执行程序,而不是一个库。 3. import 也是一个关键字,表示要引入的包,和Java的import关键字一样,引入后才可以使用它。 4. fmt是一个包名,这里表示要引入fmt这个包,这样我们就可以使用它的函数了。 5. main函数是主函数,表示程序执行的入口,Java也有同名函数,但是多了一个String[]类型的参数。 6. Println是fmt包里的函数,和Java里的system.out.println作用类似,这里输出一段文字。

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

安装程序

~/Desktop/tour
tour

跨平台编译

go env
GOOSGOARCHGOOS
  1. aix
  2. android
  3. darwin
  4. dragonfly
  5. freebsd
  6. illumos
  7. js
  8. linux
  9. netbsd
  10. openbsd
  11. plan9
  12. solaris
  13. windows
GOARCH
  1. arm
  2. arm64
  3. 386
  4. amd64
  5. ppc64
  6. ppc64le
  7. mips
  8. mipsle
  9. mips64
  10. mips64le
  11. s390x
  12. wasm
GOOSGOARCH

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

获取远程包

goproxy.io
go get

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

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

-u

获取gitlab私有库包

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

http://git.flysnow.org/git@git.flysnow.org~/.gitconfig
git.flysnow.orgGOPRIVATEGOPROXY
go get
-insecure-insecureurl insteadOfhttps

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

Go编辑器推荐

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

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

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

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

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

一些文章推荐

一个就是我的GO语言实战笔记系列,这个可以入门和深入,还有最近写的Go的第三方库介绍和分析,可以让我们快速上手以及了解原理实践。 - Go语言实战笔记(一)| Go包管理 - Go语言实战笔记(二)| Go开发工具 - Go语言实战笔记(四)| Go 数组 - Go语言实战笔记(六)| Go Map - Go语言实战笔记(九)| Go 接口 - Go语言实战笔记(十二)| Go goroutine - Go语言实战笔记(二十六)| Go unsafe 包之内存布局 - Go语言经典库使用分析(五)| Negroni 中间件(一)

此外,关于Go学习的书等,我这里有一篇知乎比较高的回答,供大家参考系统学习GO,推荐几本靠谱的书?

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

flysnow_org