go modules使用

  • Post author:
  • Post category:其他




go modules使用



前言

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

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

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

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



配置(不用管)

GO111MODULE=off # 不适用modules功能
GO111MODULE=off #使用molules功能,不会去GOPATH下找依赖包, 1.11+版本默认开启
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文件会自动添加一个依赖包。

在这里插入图片描述

代码。

package main

import (
	"fmt"
	"github.com/huandu/xstrings"
)

func main() {
	s := "heheh ADSL附近"
	center := xstrings.Count(s, "h")
	fmt.Println(center)
}



go连接Mysql

github文档如下。

在这里插入图片描述

执行下载命令

go get -u github.com/go-sql-driver/mysql

在这里插入图片描述

go.mod文件如下。

在这里插入图片描述

代码。

package main

import (
	"database/sql"
	_ "github.com/go-sql-driver/mysql"
	"time"
)

func main() {
	//s := "heheh ADSL附近"
	//center := xstrings.Count(s, "h")
	//fmt.Println(center)
	db, err := sql.Open("mysql""user:password@/dbname")
	if err != nil {
		panic(err)
	}
	// See "Important settings" section.
	db.SetConnMaxLifetime(time.Minute * 3)
	db.SetMaxOpenConns(10)
	db.SetMaxIdleConns(10)
}



可能出现的异常

如果使用

go get 第三方包

时,goland无法导入,或者报错,或者没有

Go Modules

在这里插入图片描述



项目

目录下,使用

go mod download

下载一下,基本可以回解决问题,只要有

Go Modules

,就代表没问题。

在这里插入图片描述

如果还是没有

Go Modules

,在Goland中

settings->Go->GoModules(vgo)

在这里插入图片描述

proxy地址:https://goproxy.cn



go mod所有命令

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



总结

上述我们学习了go mod的如何使用。

如果在操作过程中有任务问题,记得下面留言,我们看到会第一时间解决问题。

我是码农星期八,如果觉得还不错,记得动手点赞以下哈。

感谢你的观看。



版权声明:本文为tianyi19原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。