正文

任何一门编程语言都离不开对各种工具包的使用,工具包的管理就显得异常重要了。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