go module基础知识|青训营笔记

164 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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才会校验用户名和密码,尝试建立连接