文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一篇文章教会你如何使用Go语言Modules

2024-12-02 21:10

关注

可以理解为Python的虚拟环境,或者Java的maven,PHP的composer。

其本质解决的问题就是包管理混乱问题。

反正就是,用就完事了,只有好事,没有坏事。

配置(不用管)

  1. GO111MODULE=off # 不适用modules功能 
  2. GO111MODULE=off #使用molules功能,不会去GOPATH下找依赖包, 1.11+版本默认开启 
  3. GO111MODULE=auto:Golang # Golang自己简则是不是使用modules功能 

根据上述命令,可以得到结论,在1.11+版本中,默认就是可以使用go modules的,不需要做其他设置。

它和传统的直接go get区别在哪

没有使用go modules时,我们直接go get下载的包,会默认放在%GOPATH%/src目录下。

启用go modules后,包都会下载到%GOPATH%/pkg/mod文件夹中。

并且会带版本号,基本彻底解决依赖问题。

开始使用

创建go.mod文件

go.mod文件相当于requirement.txt文件,里面会放一些所需要的依赖包。

开始使用

我创建了一个gomod-demo文件夹。

并且CMD进入此文件夹里面。

执行命令go mod init gomod-demo。

后面这个gomod-demo可以随便写,建议和文件夹名字一样。

成功后,文件夹下会多了一个go.mod文件,代表成功。

我用Goland打开这个gomod-demo文件夹。

go.mod文件说明

  1. module:模块名称。
  2. require:依赖包列表以及版本。
  3. exclude:禁止依赖包列表(仅在当前模块为主模块时生效)。
  4. replace:替换依赖包列表(仅在当前模块为主模块时生效)。

当然,这些基本我们不需要动,都是通过命令或者IDE修改的。

简单使用

比如我需要使用一个xstrings 包。

github地址:https://github.com/huandu/xstrings。

需要执行此命令安装此包。

执行下载命令。

go.mod文件会自动添加一个依赖包。

代码:

  1. package main 
  2.  
  3. import ( 
  4.     "fmt" 
  5.     "github.com/huandu/xstrings" 
  6.  
  7. func main() { 
  8.     s := "heheh ADSL附近" 
  9.     center := xstrings.Count(s, "h"
  10.     fmt.Println(center) 

go连接Mysql

github文档如下。

执行下载命令 go get -u github.com/go-sql-driver/mysql

go.mod文件如下。

代码:

  1. package main 
  2.  
  3. import ( 
  4.     "database/sql" 
  5.     _ "github.com/go-sql-driver/mysql" 
  6.     "time" 
  7.  
  8. func main() { 
  9.     //s := "heheh ADSL附近" 
  10.     //center := xstrings.Count(s, "h"
  11.     //fmt.Println(center) 
  12.     db, err := sql.Open("mysql", "user:password@/dbname"
  13.     if err != nil { 
  14.         panic(err) 
  15.     // See "Important settings" section
  16.     db.SetConnMaxLifetime(time.Minute * 3) 
  17.     db.SetMaxOpenConns(10) 
  18.     db.SetMaxIdleConns(10) 

可能出现的异常

如果使用go get 第三方包时,goland无法导入,或者报错,或者没有Go Modules。

在项目目录下,使用go mod download下载一下,基本可以解决问题,只要有Go Modules,就代表没问题。

如果还是没有Go Modules,在Goland中settings->Go->GoModules(vgo)

go mod所有命令

  1. 在当前文件夹下初始化一个新的 module,创建 go.mod 文件:go mod init name 
  2. 拉取缺少的模块,移除不用的模块:go mod tidy 
  3. 将依赖复制到 vendor 下:go mod vendor 
  4. 下载依赖:go mod download 
  5. 检验依赖:go mod verify 
  6. 显示模块依赖图:go mod graph 
  7. 解释为什么需要依赖:go mod why 
  8. 编辑 go.mod 文件:go eidt 
  9. 查看命令列表:go mod 
  10. 查看命令帮助文档:go help mod 

总结

 

上述我们学习了go mod的如何使用。如果在操作过程中有任务问题,记得下面讨论区留言,我们看到会第一时间解决问题。

 

来源:Go语言进阶学习内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯