格尔姆模型和表格功能

我仍在学习 go 和 gorm,并按照 gorm 页面本身的教程进行操作(https://gorm.io/docs/advanced_query.html)。据说 Find 和 First 的结果可以存储在 map[string]interface{} 或 []map[string]interface{} 中。但是,在测试此功能时,它似乎不起作用:


package main


import (

    "fmt"


    "github.com/jinzhu/gorm"

    _ "github.com/jinzhu/gorm/dialects/sqlite"

)


const (

    dbtech = "sqlite3"

    dbname = "test.db"

)


var db *gorm.DB

var err error


type 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() 函数。


阿波罗的战车
浏览 157回答 1
1回答

跃然一笑

我注意到您正在浏览Gorm V2文档,但正在导入Gorm V1。您应将导入更改为:"gorm.io/gorm" _ "gorm.io/driver/sqlite"这将使代码按预期工作。如果您无法升级 Gorm 版本,则必须将结果存储在结构或结构切片上。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go