正文
任何一门编程语言都离不开对各种工具包的使用,工具包的管理就显得异常重要了。Go 的包管理方式是逐渐演进的,本文介绍Go语言的两种包管理模式。
GOPATH模式引包(不推荐)
GOPATH
$GOPATH/srcsrc
main.gomodel
- 目录层级如下
main/main.goutilsNamemodel/utils.gopackage modelvar Name string = "xiao"
- main.go 文件引model包
开启GO111MODULE后非module项目产生的问题
GO111MODULE=onGOPATH$GOPATH/srcpackageGOROOT
解决方法一:
设置GO111MODULE=off
go env -w GO111MODULE=off
go env
然后重新编译即可
解决方法二
go mod
GO MODULE 模式引包(推荐)
go module 介绍
go modules 是 golang 1.11 新加的特性。
- 模块是相关Go包的集合
- modules是源代码交换和版本控制的单元
go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
GO111MODULE 有三个值:off, on和auto(默认值)。
GOPATH/src
$GOPATH/pkgmodule
GO111MODULEGOPROXY
使用 go mod 创建新项目
GO111MODULEgo mod
1、初始化项目
go.mod
注意:
indirect
v0.0.0-20190620200207-3b0461eec859
go.modgo toolchaingo toolchaingo.modgo.mod
2、添加依赖
main.gogo run main.gogo modgo rungo get ./ ...go get package@version
3、查看依赖
go list -m allgo mod tidygo.mod
4、go.sum文件
用来做包版本管理
go.sumgo.modgo.sumhashgo.modgo.sum
总结
GOPATH模式GO MODULEGOPROXY
NPMYarn