首页 > 其他分享 >Go Modules

Go Modules

时间:2024-01-23 20:57:25浏览次数:35  
标签:GOPATH 模块 Modules go 版本 Go

Go Modules于1.11发布,自1.14之后推荐在生产中使用,其替代了传统的GOPATH模式,作为go的依赖管理工具。

认识GOPATH

GOPATH目录下一共包含了三个子目录,分别是:

  • bin:存储所编译生成的二进制文件
  • pkg:存储预编译的目标文件,以加快程序的后续编译速度
  • src:存储所有.go文件或源代码。在编写 Go 应用程序、程序包和库时,一般会以$GOPATH/src/{$package path}路径进行存放

但由于GOPATH模式没有版本控制的概念,遂被Go Modules替代。

Go Modules

环境变量

  • GO111MODULE:开启Go Modules
  • GOPROXY:代理镜像站点
  • GOSUMDB:模块版本校验。保证拉取到的模块版本数据未经过篡改
  • GOPRIVATE:作为 GONOPROXY 和 GONOSUMDB 的默认值,定义私有模块,所设置的域名将不经过 GOPROXY 和 GOSUMDB

go.mod

module gxyan.com/hello

go 1.16

require (
	google.golang.org/grpc v1.38.0
	google.golang.org/protobuf v1.26.0
)

replace google.golang.org/grpc v1.38.0 => google.golang.org/grpc v1.32.0
  • module:定义当前项目的模块路径
  • go:标识当前模块的 Go 语言版本
  • require:设置一个特定的模块版本
  • exclude:从使用中排除一个特定的模块版本
  • replace:将一个模块版本或路径替换为另外一个模块版本或路径

第一次拉取模块依赖后,Go会生成一个go.sum文件,其详细罗列了当前项目直接或间接依赖的所有模块版本,并写明了这些模块版本的 SHA-256 哈希值以备 Go 在今后的操作中保证项目所依赖的这些模块版本不会被篡改。

go get拉取依赖时分为finding(发现)、downloading(下载)以及 extracting(提取)三步。

参考:

标签:GOPATH,模块,Modules,go,版本,Go
From: https://www.cnblogs.com/gxyan/p/17983404

相关文章

  • 单实例mongodb 部署
    配置文件mkdir/data/mongopush/{log,data,conf,scripts,tmp}systemLog:destination:filelogAppend:truelogRotate:reopenpath:/data/mongopush/log/mongodb.logstorage:dbPath:/data/mongopush/datajournal:enabled:truedirectoryPerDB:tru......
  • Go-命令行参数解析
    1.解析命令行参数程序在执行时,获取在命令行启动程序是使用的参数命令行(Commandlineinterface--CLI):基于文本来查看、处理、操作计算机的界面,又被称为终端、控制台命令:在命令行执行的程序,一般是一行,包含命令名字、子命令与命令相关的选项(Flag),Flag:传递给命令的参数......
  • 从 fatal 错误到 sync.Map:Go中 Map 的并发策略
    从fatal错误到sync.Map:Go中Map的并发策略原创 波罗学 码途漫漫 2024-01-2121:00 发表于上海 听全文为什么Go语言在多个goroutine同时访问和修改同一个map时,会报出fatal错误而不是panic?我们该如何应对map的数据竞争问题呢?码途漫漫踏实地写......
  • arcengine GP调用PolygonToLine 报错 -2147467259
    这个原因是传参数问题;GP调用面转线工具时,不能利用该方式传入参数IGpValueTableObjectgpValueTableObject=newGpValueTableObject();//对一个及以上要素类进行相交运算gpValueTableObject.SetColumns(2);objecto1=pFeatureClass2;//输入IFeatureC......
  • GORM高级查询
    GORM高级查询准备数据typeStudentstruct{IDuint`gorm:"size:3"`Namestring`gorm:"size:8"`Ageint`gorm:"size:3"`GenderboolEmail*string`gorm:"size:32"`}func(stuStudent)TableName()s......
  • go-carbon v2.3.6 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
    carbon是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用。目前已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/carbongitee.com/golang-module/carbon安装使用Golang版本大于等于1.16//使用github库goget-ugithu......
  • go教程7
    Mutexvs信道通过使用Mutex和信道,我们已经解决了竞态条件的问题。那么我们该选择使用哪一个?答案取决于你想要解决的问题。如果你想要解决的问题更适用于Mutex,那么就用Mutex。如果需要使用Mutex,无须犹豫。而如果该问题更适用于信道,那就使用信道。:)由于信道是Go语言很酷......
  • go教程6
    关闭信道和使用forrange遍历信道数据发送方可以关闭信道,通知接收方这个信道不再有数据发送过来。当从信道接收数据时,接收方可以多用一个变量来检查信道是否已经关闭。v,ok:=<-ch上面的语句里,如果成功接收信道所发送的数据,那么 ok 等于true。而如果 ok 等于fals......
  • go教程8
    1.    合取代继承      Go不支持继承,但它支持组合(Composition)。组合一般定义为“合并在一起”。汽车就是一个关于组合的例子:一辆汽车由车轮、引擎和其他各种部件组合在一起。通过嵌套结构体进行组合在Go中,通过在结构体内嵌套结构体,可以实现组合。组合的典型例......
  • go教程10
    1.    自定义错误在上一教程里,我们学习了Go中的错误是如何表示的,并学习了如何处理标准库里的错误。我们还学习了从标准库的错误中提取更多的信息。在本教程中,我们会学习如何创建我们自己的自定义错误,并在我们创建的函数和包中使用它。我们会使用与标准库中相同的技术,来提......