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()
posted @ 2025-05-03 15:42  harrylearn66666  阅读(54)  评论(0)    收藏  举报