1.语法糖
传入相同类型的可变长度的参数
会推断出value的类型
2.Module
go Module是go相关包的集合,是go的依赖管理的工具,go.mod文件保存就是所有的依赖列表
使用go mod 管理项目,就不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目,包含go.mod文件的目录也被称为模块根,也就是说,go.mod 文件的出现定义了它所在的目录为一个模块。
比如我们现在的go path路径为:
而我们的项目所在的位置为:
当我们的工程位置与go path不一致的时候如果引入一些其他的包 ,构建的时候就会出错
这个时候就要使用go mod来管理依赖包
使用命令 go mod init test来创建mod文件:
现在他只包含 mod文件的名字,go的版本号 还不包含我们的依赖库的版本号.
然后使用构建命令构建项目 go build
此时增加sum文件,go.mod文件增加了依赖包及版本
此时项目就可以成功运行:
如何知道工程引用了哪些依赖呢 ? 使用go mod graph 命令打印出依赖
go mod 管理的依赖还是存放在我们的go path下面的。
将他删除过后,使用 go mod download命令可以将其下载回来
go mod tidy:把我们需要的依赖加进来,不需要的剔除
go mod verify: 验证依赖,
go mod why : 展示依赖关系
当我注释掉这段代码的时候,lru
把不需要的删掉
恢复代码:
依赖添加进去:
修改一个没有的版本,再验证它:
vendor是将工程的所有的依赖放到当前工程的vendor依赖下面去,这个相当于把我们的依赖和gopath独立开来,这样的问题就是会产生很多的冗余,他的使用场景是在Devops的时候,需要让Devops打包发布的时候,把依赖全部打包到vendor下面,而不需要再去拉取依赖,防止拉取依赖的时候出错而打包不成功。
如何往go.mod加依赖呢? 使用 go mod edit -require 命令
格式化go.mod文件:
在依赖中排除某个版本使用 exclude命令:下载的时候就不会下载这个版本的依赖
删除这一行:dropexclude: