脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - 一篇文章教会你如何使用Go语言Modules

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

2021-09-15 23:42Go语言进阶学习码农星期八 Golang

go moudules是Go的一个包管理工具,官方提供的,还是比较靠谱的,最低Go版本要求1.11+。

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

前言

go moudules是Go的一个包管理工具,官方提供的,还是比较靠谱的,最低Go版本要求1.11+。

可以理解为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

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

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

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

开始使用

创建go.mod文件

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

开始使用

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

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

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

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

执行命令go mod init gomod-demo。

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

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

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

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

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

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

go.mod文件说明

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

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

简单使用

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

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

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

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

执行下载命令。

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

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

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

代码:

  1. packagemain
  2.  
  3. import(
  4. "fmt"
  5. "github.com/huandu/xstrings"
  6. )
  7.  
  8. funcmain(){
  9. s:="hehehADSL附近"
  10. center:=xstrings.Count(s,"h")
  11. fmt.Println(center)
  12. }

go连接Mysql

github文档如下。

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

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

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

go.mod文件如下。

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

代码:

  1. packagemain
  2.  
  3. import(
  4. "database/sql"
  5. _"github.com/go-sql-driver/mysql"
  6. "time"
  7. )
  8.  
  9. funcmain(){
  10. //s:="hehehADSL附近"
  11. //center:=xstrings.Count(s,"h")
  12. //fmt.Println(center)
  13. db,err:=sql.Open("mysql""user:password@/dbname")
  14. iferr!=nil{
  15. panic(err)
  16. }
  17. //See"Importantsettings"section.
  18. db.SetConnMaxLifetime(time.Minute*3)
  19. db.SetMaxOpenConns(10)
  20. db.SetMaxIdleConns(10)
  21. }

可能出现的异常

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

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

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

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

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

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

go mod所有命令

  1. 在当前文件夹下初始化一个新的module,创建go.mod文件:gomodinitname
  2. 拉取缺少的模块,移除不用的模块:gomodtidy
  3. 将依赖复制到vendor下:gomodvendor
  4. 下载依赖:gomoddownload
  5. 检验依赖:gomodverify
  6. 显示模块依赖图:gomodgraph
  7. 解释为什么需要依赖:gomodwhy
  8. 编辑go.mod文件:goeidt
  9. 查看命令列表:gomod
  10. 查看命令帮助文档:gohelpmod

总结

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

原文链接:https://mp.weixin.qq.com/s/Q6Ue5USLuPCu3plcVC0fwA

延伸 · 阅读

精彩推荐
  • GolangGolang 语言极简类型转换库cast的使用详解

    Golang 语言极简类型转换库cast的使用详解

    本文我们通过 cast.ToString() 函数的使用,简单介绍了cast 的使用方法,除此之外,它还支持很多其他类型,在这没有多多介绍,对Golang 类型转换库 cast相关知...

    Golang语言开发栈6112021-12-02
  • GolangGo语言基础单元测试与性能测试示例详解

    Go语言基础单元测试与性能测试示例详解

    这篇文章主要为大家介绍了Go语言基础单元测试与性能测试示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步...

    枫少文7812021-12-05
  • GolangGolang实现四种负载均衡的算法(随机,轮询等)

    Golang实现四种负载均衡的算法(随机,轮询等)

    本文介绍了示例介绍了Golang 负载均衡的四种实现,主要包括了随机,轮询,加权轮询负载,一致性hash,感兴趣的小伙伴们可以参考一下...

    Gundy_8442021-08-09
  • GolangGO语言字符串处理Strings包的函数使用示例讲解

    GO语言字符串处理Strings包的函数使用示例讲解

    这篇文章主要为大家介绍了GO语言字符串处理Strings包的函数使用示例讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加...

    Jeff的技术栈6882022-04-14
  • Golang深入浅析Go中三个点(...)用法

    深入浅析Go中三个点(...)用法

    这篇文章主要介绍了深入浅析Go中三个点(...)用法,需要的朋友可以参考下...

    踏雪无痕SS6472021-11-17
  • Golanggo语言获取系统盘符的方法

    go语言获取系统盘符的方法

    这篇文章主要介绍了go语言获取系统盘符的方法,涉及Go语言调用winapi获取系统硬件信息的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    无尽海3862020-04-24
  • GolangGo语言实现自动填写古诗词实例代码

    Go语言实现自动填写古诗词实例代码

    这篇文章主要给大家介绍了关于Go语言实现自动填写古诗词的相关资料,这是最近在项目中遇到的一个需求,文中通过示例代码介绍的非常详细,需要的朋...

    FengY5862020-05-14
  • GolangGo语言range关键字循环时的坑

    Go语言range关键字循环时的坑

    今天小编就为大家分享一篇关于Go语言range关键字循环时的坑,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    benben_20154202020-05-23