最近写了很多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
- aix
- android
- darwin
- dragonfly
- freebsd
- illumos
- js
- linux
- netbsd
- openbsd
- plan9
- solaris
- windows
GOARCH
- arm
- arm64
- 386
- amd64
- ppc64
- ppc64le
- mips
- mipsle
- mips64
- mips64le
- s390x
- 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