这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
go module笔记
-
go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go moldule是Go默认的依赖管理工具
-
要启用go module 支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:off,on,auto,默认值是auto。
-
1.GO111MODULE=off禁用模块支持,编译时会从GOPATH和vendor文件夹中查找包
-
2.GO111MODULE=on启用模块支持,编译时会忽略GOPATH和vendor文件夹,只根据go.mod下载依赖
-
3.GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持
-
常见的go mod命令
go mod downlaod 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit 编辑go.mod文件
go mod graph 打印模块依赖图
go mod init 初始化当前文件夹, 创建go.mod文件
go mod tidy 增加缺少的module,删除无用的module
go mod verdor 将依赖复制到vendor下
go mod verify 校验依赖
go mod why 解释为什么需要依赖
go.mod文件记录了项目所有的依赖信息,其结构大致如下:
module test
go 1.18
require (
github.com/gin-gonic/gin v1.4.0
github.com/go-sql-driver/mysql v1.4.1
)
module用来定义包名
require用来定义依赖包及版本
-
在项目中使用go module
-
已有项目
如果需要对一个已经存在的项目启用go module,可以按照以下步骤操作:
1在项目目录下执行go mod init,生成一个go.mod文件,
如go mod init "test"
2执行go test,查找并记录当前项目的依赖,同时生成一个go.sum记录每个依赖库的版本和哈希值
-
新项目:
对于一个新创建的项目,我们可以在项目文件夹下按照以下步骤:
1.执行 go mod init 项目名命令,在当前项目文件夹下创建一个go.mod文件
2.手动编辑go.mod中的require依赖或执行go get自动发现、维护依赖
-
mysql操作
-
sql.Open()函数不会检验用户名和密码是否正确,只会检验数据源格式对不会
-
ping才会校验用户名和密码,尝试建立连接