golang项目随笔1
1、go module 跟go.sum 文件的区别是什么
1 go.mod 文件
作用:
定义当前项目的模块名称(module 声明)。
列出项目的直接依赖(require 声明)。
记录依赖的版本信息。
可以通过 replace 或 exclude 指令调整依赖的路径或版本。
特点:
只记录直接依赖(即项目中显式引用的依赖)。
是开发者手动维护的文件,通常由 go mod init 或 go get 自动生成和更新。
示例:
module getcharzp.cn
go 1.18
require (
github.com/gin-gonic/gin v1.7.7
gorm.io/gorm v1.23.3
)
2 go.sum 文件
作用:
记录所有依赖(包括直接依赖和间接依赖)的校验信息。
确保依赖的版本和内容一致性,防止依赖被篡改。
包含每个依赖的版本号和哈希值。
特点:
自动生成和维护,开发者通常不需要手动修改。
包含所有依赖的完整版本信息(包括间接依赖)。
在团队协作中,go.sum 文件可以确保所有开发者使用相同的依赖版本。
示例:
github.com/gin-gonic/gin v1.7.7 h1:abc123...
github.com/gin-gonic/gin v1.7.7/go.mod h1:def456...
总结
go.mod 是项目的依赖声明文件,记录直接依赖。
go.sum 是依赖的校验文件,记录所有依赖的版本和校验信息,用于确保依赖的完整性和一致性。
在实际开发中,开发者主要关注 go.mod 文件,而 go.sum 文件由 Go 工具链自动管理。
2、golang项目在vscode中无法跳转
原因如下:
gopls 是 Go 的官方语言服务器,负责代码补全、跳转、定义等功能。如果未安装或版本过旧,会导致跳转失效。
| gopls 未安装 | go install golang.org/x/tools/gopls@latest |
|---|---|
| 语言服务器未启动 | 重启 VS Code 或执行 Go: Restart Language Server |
| 项目依赖问题 | go mod init + go mod tidy |
| 环境变量冲突 | 检查 GOROOT 和 GOPATH 配置 |
| 扩展缓存损坏 | 重装 Go 扩展 |
3、gorm的使用
GORM 主要用于与数据库进行数据的增删查改(CRUD)操作
# 1 获取数据库连接
dbClient := database.GetDB()
# 2 数据表操作(CRUD)
# 创建
dt := models.DownloadTask{
FileNum: 0,
Status: 0,
From: "upload",
Param: string(sParams),
CreatedAt: time.Now(),
}
err := dbClient.Create(&dt).Error
# 查询
dp := models.NewDownloadTaskQuerySet(database.GetDB())
ret := &models.DownloadTask{}
err := dp.IDEq(id).One(ret)
# 更新(Update)
_ = dp.GetUpdater().SetStatus(1).Update()
# 删除
err = dp.IDEq(id).Delete()

浙公网安备 33010602011771号