一)前言可以输入go env查看go环境变量
2 ) GOPATH GOPATH是Go语言中使用的环境变量,使用绝对路径提供项目的工作目录
工作目录:工程开发的相对参考目录。 工作区的概念与工作目录的概念类似。 如果不使用工作目录概念,则多人开发时,每个人都有自己的目录结构,读取配置文件的位置不统一,输出的二进制可执行文件也不统一,从而影响开发效率
使用GOPATH的工程结构:
在GOPATH中指定的工作目录下,代码始终保存在$GOPATH/src目录下。 项目收到go build、go install或go get等指示后,生成的二进制可执行文件位于$GOPATH/cdxf目录中,生成的中间缓存文件存储在$GOPATH/pkg中
如果需要将整个源代码添加到版本控制工具(VCS )中,只需添加$GOPATH/src目录中的源代码。 可以从src目录生成cdxf和pkg目录的内容。
其中,
全局GOPATH表示全局GOPATH,通常来自系统环境变量的GOPATH; Project GOPATH表示项目中使用的GOPATH,该设置存储在工作目录的. idea目录中,未设置为环境变量的GOPATH,但在编译时使用。 建议在开发时仅填写项目GOPATH,为每个项目尽可能仅设置一个GOPATH,而不要使用多个GOPATH和全局GOPATH。
(三) GOROOT GOROOT是go语言的安装路径,安装在/usr/local/go下
可以看到src、cdxf、pkg三个文件夹,
的标准Go语言代码库包含大量软件包,安装Go时,大多数情况下会自动安装在系统上。 您可以在$GOROOT/src/pkg目录中查看这些软件包。 当我们内置import软件包时,不需要额外的安装。 程序运行时,首先到GOROOT下查找并运行相应的软件包。
注:
1、如果需要运行golang程序以获取导入软件包,编译器将首先前往GOROOT路径下的src文件夹,以查找程序中是否有导入软件包
2、如果在GOROOT下找不到,在GOPATH下src下找这个包
所以只要在GOROOT和GOPATH下找不到包,就报告错误
GOPATH的缺点:
如果第三方软件包不是官方库,则必须将其放在GOPATH/src下才能使用
通常,使用go get命令获取第三方软件包
go get是我们使用别人想向github公开的包,从网上的clone到GOPATH/src使用时间最长的。
听起来方便吗? 它使src下的项目变得复杂,除了自己的项目外,还有第三方库项目。
如果我们的每个项目都采用不同版本的第三方库怎么样? 在go1.11之前,安装了最大组的不同GOPATH。 go社区也开发了相应的软件包管理工具(如Vender、Dep等)来解决此问题,但它们不是官方的。
四. GOMOD Go Modules类似于java的maven。 将第三方库放在本地空间中,但不会自动下载软件包
使用以下命令打开或关闭go mod
oenv-wgo111module=onon
go env-w go 111模块=关闭
go 111模块有三个不同的值
自动
如果存在go.mod文件或位于GOPATH之外,其行为与GO111MODULE=on相同。 这意味着在Go 1.13和更高版本中,所有代码仓库都可以保存在GOPATH下。 如果位于GOPATH中,并且go.mod文件不存在,则其行为与GO111MODULE=off相同。 开启
即使项目位于您的GOPATH中,GO111MODULE=on也会强制使用Go模块。 go.mod必须正常运行
关闭
强制Go表示GOPATH方式,即使在GOPATH之外。
下载的第三方库在哪里? 其实在GOPATH/pkg/mod文件夹中
要使用gomod进行包管理,必须在项目根目录下运行
go mod init module name
然后,可以进行go get ***、import等操作! 水平。
gomod使用流程
1设定环境变量
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct
2谷歌打开go mod
使用3 go get
使用go module后,go get获取依赖关系的方式发生了变化
下载项目为go get ./. (首选tag ) go get golang.org/x/text@latest )主分支的最新commitgo get golang.org/x/text@master拉动tag为v0.3.2的commitgogetgolang.org/x/text @ v0.3. 2的commit,最终v0.3.2: gogetgolang.org
初始化模块。 模块名称是你的项目名称
将go mod init模块名称modules下载到本地cache。 当前,所有模块版本的数据都缓存在$GOPATH/pkg/mod和$GOPATH/pkg/sum中
go mod download 5 mod高级操作
更新为最新版本
gogetgithub.com/gogf/gf @ version 6增加丢失的数据包,删除未使用的数据包
见go mod tidy五: https://www.Jian Shu.com/p/a 244 f 48 f 49 b 3
3359砖局域网. zhi Hu.com/p/103534192