【发布时间】:2021-01-29 07:30:50
【问题描述】:
我正在使用 Go 进行应用程序开发,并使用 gorm 库连接到数据库。我看到 gorm 有 2 个库 github.com/jinzhu/gorm 和 gorm.io/gorm。
我不知道该用哪一个。它们有何不同?
【问题讨论】:
我正在使用 Go 进行应用程序开发,并使用 gorm 库连接到数据库。我看到 gorm 有 2 个库 github.com/jinzhu/gorm 和 gorm.io/gorm。
我不知道该用哪一个。它们有何不同?
【问题讨论】:
直到 v1.9.16 的 Gorm 版本 1 保存在 github.com/jinzhu/gorm 并从您的代码中导入它,您将使用该路径:
import (
...
"github.com/jinzhu/gorm"
)
Go 的约定是,当一个新的包版本不再向后兼容时,导入路径应该改变,所以当发布版本 2 时,团队决定将 repo 移动到 github 上的一个新组织:https://github.com/go-gorm/gorm,并且这个使用 gorm.io/gorm 将新版本导入您的代码:
import (
...
"gorm.io/gorm"
)
(请记住,由于 go 生态系统中的怪癖,v2 被标记为 >= v1.20.0,我知道这很混乱!)
Gorm v2 在语法和功能上通常与 v1 非常接近,但更强大、更一致并且已经消除了大量错误。我还没有看到基准测试,但从盒子里看,由于使用了准备好的语句,它应该也更高效。
总而言之,没有理由不在新项目中使用 v2,也有很多理由在现有项目中从 v1 迁移。
【讨论】:
其实是同一个repo,但是jinzhu把GormV2移到了新的repo(https://github.com/go-gorm/gorm or gorm.io/gorm)。
从我的角度来看,我们应该使用更新库github.com/go-gorm/gorm
【讨论】:
我建议不要使用github.com/jinzhu/gorm。使用gorm.io/gorm,由于我使用旧版本的经验,有时会出现错误
【讨论】:
github.com/jinzhu/gorm 这会改善您的答案。就目前而言,这并不能回答问题,很可能会被删除。