【环境篇】搭建golang开发环境

image

学习一门语言,不少人都会是从搭建环境开始。有的语言的环境比较复杂,而有的语言环境很简单。对于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环境至此已经结束,就这么简单?就这么简单,但还有其余事情能够继续说下去,接下来我会分享一下我平时的开发习惯或者经验。
gorun.png

实用的golang开发环境技巧

1.利用虚拟机共享目录来应对不一样环境

有这样一个场景:有个go项目,它的打包方式是make,可是咱们想在Windows下编写代码,在Windows下正常状况下没有make工具,而Linux有。固然有人会提出,那就在Windows下安装相应的make工具就行了,的确如此,这样就解决问题了。我接下来所要讲的技巧权当作一种另外的解题思路。
首先,安装一个Linux虚拟机,建立好以后设置共享目录:
vm1.png

vm2.png

vm3.png

vm4.png

vm5.png

在个人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

③ 将对应端口转发出来:
mysql-port.png
④ 在Windows下用熟手的工具去操做,能够用navicat等工具,我我的比较喜欢都在IDE里执行:
mysql-connect.png
如此一来,咱们就能够利用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

The newly downloaded version can be used like go:

$ go1.10.7 version
go version go1.10.7 linux/amd64

All Go versions available via this method are listed on the download page. You can find where each of these extra Go versions is installed by looking at its GOROOT; for example, go1.10.7 env GOROOT. To uninstall a downloaded version, just remove its GOROOT directory and the goX.Y.Z binary.

这段文本是在说你能够经过go get的方式去安装其余的go版本,这种方式也比较简单。但应该不多人会有这样的需求了吧,由于通常来说,go的版本安装最新的就好了,go的兼容作得很好,不会由于你的代码是几年以前写的就运行不起来。

小结

本篇文章看起来彷佛不是很适合完彻底全的新手,好比用到了docker、docker-compose,没错,是这样的,个人初衷是分享个人经验,而后提高本身,而不是写一篇网上已经有的文章。若是有人对个人文章有兴趣的话,我也愿意在有空的时候交流交流。


欢迎关注个人公众号:onepunchgo,会整理相关的文档和资料。

image

相关文章
相关标签/搜索