相信很多同学在初学Go语言阶段都会被GOROOT和GOPATH的设置搞得一脸懵逼,网上百度了一大堆解决方案,结果后面使用的时候还是报错,各个解决方案也是五花八门,花样百出,那么我经历了半年的Go语言学习之后才真正搞懂这两者的用法,索性发出来供大家参考,如有不对的地方还请多多纠正。
一、搞清楚这两者的路径
1.0 go env
使用 go env 命令可以查看Go环境的相关设置(前提是已经设置环境变量),我们主要是关注以下三个设置:
- set GO111MODULE=on
- set GOROOT=D:\Golang\Go
- set GOPATH=E:\GoProject
1.1 GOROOT
GOROOT是GO的根路径,也就是安装Go的时候你设置的安装路径,这个路径就相当于Java的jdk安装路径和python的解释器安装路径,例如下图我的安装路径就是 ==D:\Golang\Go==
1.2 GOPATH
GOPATH网上很多人都说是用于存放Go项目文件的路径,其实不然,准确来说存放Go项目文件的路径是 ==$GOPATH/src==,所以我强烈建议GOPATH目录下新建三个文件夹,分别是 ==src==、==bin==、==pkg==,另外你的每一个Go项目都应该在 ==src== 目录下,而项目中用到的第三方包会下载到==pkg==目录下,下图是我的GOPATH路径
二、头疼的时候来了:设置环境变量
🆗,搞清楚两者的区别后,我们开始进行最头疼的环节--环境变量的设置,该环节一共需要设置三个环境变量,而且全是系统变量,话不多说,直接开始
2.1 系统Path
设置这个是为了方便我们在cmd窗口可直接全局使用go的命令行,而不用切换到go的安装路径下面,但是请注意这里需要设置的是 ==$go安装路径/bin==目录,这是因为 ==bin== 目录下面有== go.exe==文件,我的设置如下
这一步设置完成确定后,我们打开cmd窗口就可以使用go命令,比如使用
go version查看版本号,如果出现版本号就说明成功了
2.2 设置GOROOT
新建一个系统变量,直接设置安装路径就行,这个时候就不需要设置到bin目录下面,直接是安装的根目录就行,下图是我的GOROOT设置
2.3 设置GOPATH
同样新建一个系统变量,这个变量的值就是以后用来存放自己的项目的路径,但是注意,我前面提到GOPATH路径下面有三个目录,分别是==bin==、==pkg==、==src==,而你的Go项目应该存放在==src==目录下面才正确
到这里环境变量的设置就已经完成了。
三、启用GO111MODULE
如果你希望你的Go项目能够有个合理的包管理工具,这样让他看起来比较官方的进行包管理,那么我们需要启用GO111MODULE,可以在cmd中使用命令go env -w GO111MODULE=on 命令来开启包管理,之后可以使用go env命令查看是否开启
四、开始写项目
4.1 go mod init
推荐大家使用Goland进行项目构建和代码编辑,新建完成一个项目之后,我们需要在项目的根目录下面进行mod初始化,这一步很重要,如果不初始化,很有可能会遇到xxx is not in GOPATH的报错,因此,对你的项目进行go mod 初始化,使用以下命令
go mod init test_project
这里的==test_project==是我随便起,最好是根据项目的名称相关联,比如你的项目名是==StudentManager==,那么我强烈建议你在初始化的时候使用go mod init student_manager,因为后续我们导入自己写的包的时候会用到这个名称
初始化完成之后,会在你的项目根目录下生成一个文件go.mod,这个文件我们只用看第一句,你会发现这个名称就是你使用go mod init xxx初始化的名称
4.2 Goland设置
初始化完成之后,如果你是在Goland里面进行代码编辑,那么我们需要设置Goland开启包管理
File->Settings-Go->Go Modules,勾选Enable Go modules integration,如下图
好了,这个时候我们就可以愉快的写代码了。
五、导入自定义的包
我们在写代码的时候难免会将自己定义的包在另外一个go代码文件里面使用,请注意,如果你按照上面我的步骤进行的设置,那么我们导入包的时候,应该这样写:
import "test_project/xxx"
你会发现你的首级目录是我们初始化使用的名称,而不是项目的名称,这就是开启go mod管理之后的效果,如果你不开启go mod,那么这里的导包路径就应该是:
import "TestProject/xxx"
首级目录是你的项目名称