Golang入门(1):安装与配置环境变量的意义

摘要

在几年前学习Java的时候,环境的配置就会劝退一部分的初学者。而对于Golang来讲,也须要从环境的配置开始学起。这一篇文章将从如何安装Golang开始讲起,随后将会提到Golang中的环境变量GOROOT和GOPATH的配置以及这两个环境变量起到什么样的效果。
下面开始:html

安装

和其余语言的安装相似,golang的安装咱们也能够采用三种方式进行,从简单到复杂依次是经过可执行文件的安装、官方二进制包安装和源码编译安装。python

咱们能够在这里获取最新版本的go安装文件。git

在这里解释一下,其实二进制文件的安装和可执行文件的安装方式是同样的,可是在Windows中经过可执行文件来安装会自动配置GOROOT环境变量,更加省事而已。golang

在这里以Windows为例,其余系统的安装请查看官方文档所介绍的安装方式:并发

对于Windows用户,能够选择MSI安装程序或ZIP包:工具

MSI安装

打开所下载的MSI文件,并跟随提示来安装Go工具。默认状况下,该安装程序会将Go发行版放到 C:\Go 中。学习

此安装程序应该会将 C:\Go\bin 目录放到你的 PATH 环境变量中。测试

完成。操作系统

ZIP文件安装

下载ZIP文件并解压(这里假设已经解压到了C:\Go中):命令行

将你的Go根目录中的 bin 子目录(例如 C:\Go\bin)添加到你的 PATH 环境变量中,如图:

配置环境变量

测试

在命令行中,输入

go version

你将能够看到本身所安装的go版本,如图:

go版本

环境变量

GOROOT

不知道你们有没有考虑过一个问题,咱们为何须要配置环境变量。

环境变量是在操做系统中一个具备特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操做系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户经过设置环境变量,来更好的运行进程。

这是百度百科中对于环境变量的定义,也就是说,环境变量是为了方便咱们更好的运行某个程序,加入到系统环境变量中的程序,将能够在命令行中直接执行,而不须要咱们用绝对路径来执行。好比咱们在使用golang的过程当中,经常用到go get等;在使用python的过程当中,经常用到pip install等,在使用Git的时候,须要使用git clone等。用GO举个例子:

若是咱们须要查看go的版本,咱们一般是在命令行中输入go version,其实在这里这行命令的所有内容是:

C:\Go\bin\go.exe version

也就是说,操做系统会把加入了环境变量的全部程序,建立了一个相似于快捷方式的路径,使用户的访问能够更加的方便快捷。不管是GO语言,仍是其余的语言,都是如此,像咱们经常使用的git,为何咱们能直接打git xxx这个命令,而不须要写完整的绝对路径,也是由于他已经被加入了系统的环境变量中:

git绝对路径

GOPATH

GOPATH也被称为Golang的工做目录。它分为两种,一种是全局GOPATH,另外一种是项目对应的GOPATH,听起来有点绕,咱们下面在进行详细的解释。

总的来讲,GOPATH是go命令经常须要用到的,如go rungo installgo get等执行的目标路径,这些命令所操做的目录,就是GOPATH。

再说说GOPATH包含了有哪些结构:

.(GOPATH的路径)
├── bin
├── pkg
└── src
  • src存放的是咱们的咱们项目的源代码(好比:.go .c .h .s等)
  • pkg编译时生成的中间文件(好比:.a)
  • bin编译后生成的可执行文件

在Golang的项目中,全部的源码都是放在/src中,通常的作法是一个目录一个项目。

也就是说,在开发过程当中,若是须要引用到其余的项目,使用import "xxx",将会引用到$GOPATH/src/xxx这个项目,咱们能够将这里的src联想为Java开发中的Maven仓库,src内是一个个依赖。go get命令所对应的效果就是给所选择的项目引入远程的包,能够理解为引入依赖。而对于某个项目中,如有package main,则这个go文件是主文件,将会被编译运行。

全局GOPATH与项目GOPATH

然而,咱们都知道,在咱们开发Java项目的时候,项目的位置和Maven Repository位置是不一样的。而在上面的设置中,显然咱们的项目和咱们引入的其余包写在了一块,这样显得不够优雅,并且可能会由于引用的错误,致使一些编译时的奇奇怪怪的错误。

因此,咱们应该为每一个项目都设置一个单独的GOPATH。这样,项目在引用包的时候,会首先在GOROOT/src中寻找,例如fmt输入输出包,当没法找到的时候,会寻找PROJECT GOPATH/src,若是仍是没法找到,将会寻找GLOBAL GOPATH/src,这样一来,咱们就能够将一些通用的包放入全局目录中,其他的自行定义。既保证了项目文件的整洁,也保证了编译的正确性。

如何设置/修改GOPATH

对于全局GOPATH,咱们能够用go env命令查看当前的全局GOPATH:

查看GOPATH
能够看到,此时的GOPATH为D:\Go_path。然而,若是用户不进行设置,GOPATH是有一个默认值的:

平台 GOPATH默认值 举例
Windows %USERPROFILE%/go C:\Users\用户名\go
Unix $HOME/go /home/用户名/go

也就是说,只须要用户在须要的地方设置一个目录,而且将该目录加到环境变量中,而且名为GOPATH,那么就能够将这个目录设置为GOPATH了:

GOPATH设置

注意,有些用户可能会出现建立了文件夹,也添加了环境变量,可是却没法修改GOPATH的状况

这是由于只建立了gopath的文件夹,可是这个文件夹里面不包含srcpkgbin文件夹,因此go没法将这个文件夹识别为GOPATH路径。

GOPATH文件组成
因此,必定要在你添加的GOPATH路径中加入这三个文件夹,GOPATH的修改才能生效。

写在最后

首先,谢谢各位能够看到这里(鞠躬

做者实际上是一个Java开发者,目前也刚刚开始接触Golang这门年轻的语言,想要经过博客的形式,一方面更好的消化所学到的知识,另外一方面也但愿能够将本身的见解与你们分享,你们一块儿共同进步(奥利给!

固然,由于做者才识疏浅,确定有不少疏漏或者认识错误的地方,若是你在本文中发现了与你认识相违背的地方,或者有哪里是做者说的比较含糊不够清晰的地方,请不吝指教交流(再次鞠躬!

最后,再次感谢~

PS:若是有其余的问题,也能够在公众号找到做者。而且,全部文章第一时间会在公众号更新,欢迎来找做者玩~