前言gomodules是一款Go的包管理工具。官方提供,比较靠谱。最低Go版本需要1.11+。可以理解为Python的虚拟环境,Java的maven,PHP的composer。它本质上解决的问题是包管理混乱的问题。反正用了就完了,只有好事没有坏事。Configuration(don'tcare)GO111MODULE=off#不适用于modules函数GO111MODULE=off#使用moules函数,不会去GOPATH寻找依赖包,1.11+版本默认启用GO111MODULE=auto:Golang#golang根据上面的命令简单的使用modules函数从上面的命令可以得出结论,在1.11+版本中,默认就可以使用gomodules,不需要其他设置。它和传统的直接goget有什么区别?不使用gomodules时,goget直接下载的包默认会放在%GOPATH%/src目录下。启用gomodules后,包将下载到%GOPATH%/pkg/mod文件夹。而且它会有一个版本号,基本上彻底解决了依赖问题。开始使用创建一个go.mod文件go.mod文件相当于requirement.txt文件,里面会包含一些需要的依赖包。首先,我创建了一个gomod-demo文件夹。然后CMD进入这个文件夹。执行命令gomodinitgomod-demo。后面的gomod-demo可以随便写,建议和文件夹同名。成功后文件夹下会有一个go.mod文件,表示成功。我用Goland打开这个gomod-demo文件夹。go.mod文件描述模块:模块名称。require:取决于包列表和版本。exclude:禁止依赖包列表(仅当当前模块为主模块时有效)。replace:替换依赖包列表(仅当当前模块为主模块时有效)。当然,这些基础我们不用动,都是通过命令或者IDE修改的。使用简单例如我需要使用一个xstrings包。github地址:https://github.com/huandu/xstrings。需要执行此命令来安装此软件包。执行下载命令。go.mod文件会自动添加依赖包。代码:packagemainimport("fmt""github.com/huandu/xstrings")funcmain(){s:="hehehnearADSL"center:=xstrings.Count(s,"h")fmt.Println(center)}goconnectMysqlgithub文档如下。执行下载命令goget-ugithub.com/go-sql-driver/mysqlgo.mod文件如下。代码:packagemainimport("database/sql"_"github.com/go-sql-driver/mysql""time")funcmain(){//s:="hehehnearADSL"//center:=xstrings.Count(s,"h")//fmt.Println(center)db,err:=sql.Open("mysql","user:password@/dbname")iferr!=nil{panic(err)}//见“Importantsettings"section.db.SetConnMaxLifetime(time.Minute*3)db.SetMaxOpenConns(10)db.SetMaxIdleConns(10)}可能出现的异常如果使用goget第三方包,goland无法导入,或者报错,或者没有GoModules。在项目目录下,使用gomoddownload下载,基本可以解决问题。只要有GoModules,就说明没有问题。如果仍然没有GoModules,在Golandsettings->Go->GoModules(vgo)中的所有命令gomod在当前文件夹中初始化一个新模块,创建一个go.mod文件:gomodinitname拉取缺少的模块,删除它们模块:gomodtidy拷贝依赖到vendor:gomodvendor下载依赖:gomoddownload检查依赖:gomodverify显示模块依赖图:gomodgraph解释为什么需要依赖:gomodwhy编辑go.mod文件:goeidt查看命令列表:gomod查看命令帮助文档:gohelpmod总结一下上面我们学习了如何使用gomod。如果在操作过程中遇到任务问题,记得在下方讨论区留言,我们看到会第一时间解决。本文转载自微信公众号《Go语言进阶学习》,可通过以下二维码关注。转载本文请联系Go语言进阶学习公众号。
