我仍在学习 go 和 gorm,并按照 gorm 页面本身的教程进行操作(https://gorm.io/docs/advanced_query.html)。据说 Find 和 First 的结果可以存储在 map[string]interface{} 或 []map[string]interface{} 中。但是,在测试此功能时,它似乎不起作用:package mainimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite")const ( dbtech = "sqlite3" dbname = "test.db")var db *gorm.DBvar err errortype TestStruct struct { Name string}func main() { db, err = gorm.Open(dbtech, dbname) defer db.Close() db.AutoMigrate(&TestStruct{}) db.Create(&TestStruct{Name: "Alice"}) db.Create(&TestStruct{Name: "Bob"}) structResults := []TestStruct{} db.Find(&structResults) fmt.Println(structResults) var mapResult map[string]interface{} db.Model(&TestStruct{}).First(&mapResult) for k, v := range mapResult { fmt.Println(k, " - ", v) } fmt.Println(mapResult) var mapResults []map[string]interface{} db.Model(&TestStruct{}).Find(&mapResults) for k, v := range mapResult { fmt.Println(k, " - ", v) } fmt.Println(mapResult)}输出为:[{Alice} {Bob}]map[]map[]我做错了什么吗?还是此功能不再可用?编辑:它不能同时使用 Model() 和 Table() 函数。
1 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
我注意到您正在浏览Gorm V2文档,但正在导入Gorm V1。
您应将导入更改为:
"gorm.io/gorm" _ "gorm.io/driver/sqlite"
这将使代码按预期工作。
如果您无法升级 Gorm 版本,则必须将结果存储在结构或结构切片上。
- 1 回答
- 0 关注
- 67 浏览
添加回答
举报
0/150
提交
取消