学习一门语言,不少人都会是从搭建环境开始。有的语言的环境比较复杂,而有的语言环境很简单。对于go而言,说简单,的确不难,但有些概念须要先对其有所理解,才知道为何这么用。网上对于怎么搭建一个golang开发环境已有了不少的教程,在这里我会简单介绍,不作过多描述。本篇文章仅对一些概念进行介绍,以及分享对一些我本人搭建开发环境的心得与技巧,若有错误,欢迎指正和交流。mysql
搭建golang环境
1.到golang下载地址下载对应环境的安装包或者源码,如果Linux环境的话,将源码包下载解压以后,放至/usr/local/(实际上放至合适位置便可,只要把它添加进PATH就行),如:linux
export PATH=$PATH:/usr/local/go/bingolang
2.配置GOPATH、GOROOT,这里可能须要解释一下,对于新手来讲,确定不熟悉这两个环境变量的意义。sql
GOROOT:golang的安装目录。docker
GOPATH:go的工做空间,在GOPATH下会有三个目录:src,bin,pkg。shell
src:存放源码(在不设置go mod的状况下,go get的包放至这里,你本身的项目源码也能够放在这里);windows
bin:编译后的可执行文件放置的位置,若是在你项目go install,生成的可执行文件会放在此处;安全
pkg:存放编译时产生的文件(.a文件)并根据平台进行归档,好比,windows64下产生的文件放在windows_amd64目录下,一般状况下,咱们不会太关心这些文件。不过在go module包管理方式下,pkg目录变得受人关注了, 依赖的第三方包被下载到了$GOPATH/pkg/mod路径下,而不是src文件夹。ide
3.下载一个合适的IDE,我我的比较喜欢用Goland,选择一个适合本身的IDE很重要,也有人喜欢vs code,这没有关系,只要本身使用顺手就行。工具
4.简单写段代码测试一下,go的安装状况如何,在$GOPATH/src下建立一个目录做为测试项目,建立一个main.go文件,代码以下:
package main import ( "fmt" ) func main() { fmt.Print("Hello world!") }
接着在项目根目录下go run main.go或者像我同样在IDE里面直接点击一下运行按钮便可。能够说搭建一个golang环境至此已经结束,就这么简单?就这么简单,但还有其余事情能够继续说下去,接下来我会分享一下我平时的开发习惯或者经验。
实用的golang开发环境技巧
1.利用虚拟机共享目录来应对不一样环境
有这样一个场景:有个go项目,它的打包方式是make,可是咱们想在Windows下编写代码,在Windows下正常状况下没有make工具,而Linux有。固然有人会提出,那就在Windows下安装相应的make工具就行了,的确如此,这样就解决问题了。我接下来所要讲的技巧权当作一种另外的解题思路。
首先,安装一个Linux虚拟机,建立好以后设置共享目录:
在个人Windows系统的D盘下有一个share目录,我将它共享到了虚拟机里面,并在Linux中为它建立了一个软链接,这样方便我查看和修改文件。share目录下的go目录即为个人GOPATH,我将虚拟机中的GOPATH设置成了同一个路径,这样子就能够在两个系统中共享同一份下载的源码。好了,如今咱们能够在Windows下打代码,在Linux下编译了(有个Linux环境莫名的有安全感)。
2.利用docker和docker-compose进行开发
可以写一段简单的打印“hello world”的代码就证实你的开发环境搭建完毕了吗?不少时候,初学者看到的其余golang入门文章到此就结束了,但我以为还有些能够继续进步的地方。不少项目会用到mysql、reids等,下面我会用docker和docker-compose为咱们的项目提供支持。个人操做思路是在虚拟机安装docker和docker-compose,并安装mysql等,而后将端口转发出来。
① 在虚拟机中安装docker和docker-compose;
② 将建立工做目录,在该目录下建立一个docker-compose.yaml,接着运行以下:
version: '3' services: mysql: container_name: mysql image: mysql:5.6 ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: "123456" MYSQL_ROOT_HOST: "%" volumes: - "./data:/var/lib/mysql" # 挂载数据目录 - "./config:/etc/mysql/conf.d" # 挂载配置文件目录
$ docker-compose up -d
③ 将对应端口转发出来:
④ 在Windows下用熟手的工具去操做,能够用navicat等工具,我我的比较喜欢都在IDE里执行:
如此一来,咱们就能够利用docker和docker-compose建立一些咱们须要的组件,而且在Windows和Linux下都链接成功。这么作有一些好处,咱们能够在Windows下尽情的编码和测试,在Linux下去作编译和打包工做。不过,我并无很详细地将这其中的操做过程写出来,这篇文章里主要提供一些思路,若有人有兴趣,我之后会写一篇跟工具备关的文章。
3.golang版本的选择
我在看官网的文档时,发现了一个有趣的东西,貌似平时没有不少人去关注。
Installing extra Go versions
It may be useful to have multiple Go versions installed on the same machine, for example, to ensure that a package's tests pass on multiple Go versions. Once you have one Go version installed, you can install another (such as 1.10.7) as follows:
$ go get golang.org/dl/go1.10.7 $ go1.10.7 download
go
$ go1.10.7 version go version go1.10.7 linux/amd64
GOROOTgo1.10.7 env GOROOTGOROOTgoX.Y.Z
这段文本是在说你能够经过go get的方式去安装其余的go版本,这种方式也比较简单。但应该不多人会有这样的需求了吧,由于通常来说,go的版本安装最新的就好了,go的兼容作得很好,不会由于你的代码是几年以前写的就运行不起来。
小结
本篇文章看起来彷佛不是很适合完彻底全的新手,好比用到了docker、docker-compose,没错,是这样的,个人初衷是分享个人经验,而后提高本身,而不是写一篇网上已经有的文章。若是有人对个人文章有兴趣的话,我也愿意在有空的时候交流交流。
欢迎关注个人公众号:onepunchgo,会整理相关的文档和资料。