一.go的安装以及Goland配置
go的安装:
MAC 系统下你可以使用 .pkg 结尾的安装包直接双击来完成安装,安装目录在 /usr/local/go/ 下。
mac中按 ⌘+shift+. 即可显示隐藏文件夹,再按一次,即可再隐藏。
go安装后的目录结构:
GOPATH="/Users/xll/go"
GOROOT="/usr/local/go"
GOROOT和GOPATH都是环境变量,其中GOROOT是我们安装go开发包的路径,而从Go 1.8版本开始,Go开发包在安装完成后会为GOPATH设置一个默认目录(/home/用户名/go)
Go语言要求必须配置GOPATH环境变量.告诉系统项目的路径.保存go项目代码和第三方依赖包。
没有包管理阶段
一开始go发布的时候是没有包管理的
go get命令会根据路径,把相应的模块获取并保存在$GOPATH/src
也没有版本的概念,master 就代表稳定的版本
当 Go 在 2009 年首次推出时,GOPATH并没有随包管理器一起提供。取而代之的是 go get,通过使用它们的导入路径来获取所有源并将其存储在 $GOPATH/src 中。没有版本控制并且『master』分支表示该软件包的稳定版本。
GOPATH是开发时的工作目录。用于:
保存编译后的二进制文件。
go get和go install命令会下载go代码到GOPATH。
import包时的搜索路径
使用GOPATH管理项目时,GO会在以下目录中搜索包:
GOROOT/src:该目录保存了Go标准库代码。
GOPATH/src:该目录保存了应用自身的代码和第三方依赖的代码。
第一步:Go会先去GOROOT的scr目录中查找,没找到。
第二步:继续在GOPATH的src目录去找,如果该目录不存在,会报错找不到package。在使用GOPATH管理项目时,需要按照GO寻找package的规范来合理地保存和组织Go代码。
Go1.11版本之后,已不再推荐使用GOPATH来构建应用了,推荐使用go mod模式来管理依赖环境了,也不再强制我们把代码必须写在GOPATH下面的src目录了,你可以在你电脑的任意位置编写go代码。
什么时候用 GOPATH, 什么时候用 GOMODULE ? 这是个问题,需要通过 GO111MODULE 来解决。
GO111MODULE 有三个值:off, on和auto(默认值)。
1.GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
2.GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
3.GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
1.当前目录在GOPATH/src之外且该目录包含go.mod文件
2.当前文件在包含go.mod文件的目录下面。
Go语言在寻找包时会从GOPATH/src 路径中寻找包,如果不存在去GOROOT/src(Go语言标准库源码所在文件夹)下找
Goland是集成开发环境,所以在GoLand中配置GOPATH即可.
在很多与 Go语言相关的书籍、文章中描述的 GOPATH 都是通过修改系统全局的环境变量来实现的。设置全局 GOPATH 的方法可能会导致当前项目错误引用了其他目录的 Go 源码文件从而造成编译输出错误的版本或编译报出一些无法理解的错误提示。
比如说,将某项目代码保存在 /home/davy/projectA 目录下,将该目录设置为 GOPATH。随着开发进行,需要再次获取一份工程项目的源码,此时源码保存在 /home/davy/projectB 目录下,如果此时需要编译 projectB 目录的项目,但开发者忘记设置 GOPATH 而直接使用命令行编译,则当前的 GOPATH 指向的是 /home/davy/projectA 目录,而不是开发者编译时期望的 projectB 目录。编译完成后,开发者就会将错误的工程版本发布到外网。
因此,建议大家无论是使用命令行或者使用集成开发环境编译 Go 源码时,GOPATH 跟随项目设定。在 Jetbrains 公司的 GoLand 集成开发环境(IDE)中的 GOPATH 设置分为全局 GOPATH 和项目 GOPATH,如下图所示。
图中的 Global GOPATH 代表全局 GOPATH,一般来源于系统环境变量中的 GOPATH;Project GOPATH 代表项目所使用的 GOPATH,该设置会被保存在工作目录的 .idea 目录下,不会被设置到环境变量的 GOPATH 中,但会在编译时使用到这个目录。建议在开发时只填写项目 GOPATH,每一个项目尽量只设置一个 GOPATH,不使用多个 GOPATH 和全局的 GOPATH。
一、gin的安装
设置GOPATH目录,GOPATH="/Users/xll/go"(安装go开发包的时候会默认设置GOPATH="/Users/xll/go",所以构建了这个目录,如下图:)
新建一个存放你自己工程的目录,并在goland中创建新的project,创建好后,新建的工程目录下就会有出现go.mod文件,里面只有当前的模块路径和预期的 Go 语言版本。
在终端下进入之前新建的工程目录下
/Users/xll/go_gin_examples
输入下面的命令(需要翻墙)
$ go get -u github.com/gin-gonic/gin
国内直接安装不了,设置下面的命令
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
安装成功后,
注意:如果没有创建"/Users/xll/go"这个目录,安装gin的时候,go get命令会自动创建该目录并将gin安装到"/Users/xll/go/pkg"下;
go.mod文件会发生变化,还会新增一个go.sum文件
indirect 的意思是传递依赖,也就是非直接依赖。执行下面的命令,调整为直接依赖。
go mod tidy