无法使用 GORM 获取数据

Can't get data with GORM

我正在尝试从 mysql 数据库获取数据 但不要 return 任何东西。 这是我第一次使用 Gorm,我对 Go 的体验很差。

package main

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
    "fmt"
)

type productos struct {
    gorm.Model

    id_producto int         `gorm:"type:int, primary_key"`
    stock       int         `gorm:"type:int"`
    codigo      string      `gorm:"type:varchar(45)"`
    rubro       string      `gorm:"type:varchar(100)" `
    descripcion string      `gorm:"type:varchar(140)" `
    proveedores string      `gorm:"type:varchar(250)" `
    moneda      string      `gorm:"type:varchar(10)" `
    costo       float32     `gorm:"type:decimal" `
    iva         float32     `gorm:"type:decimal" `
    pedir       bool        `gorm:"type:tinyint" `
}

func main() {
    db, err := gorm.Open("mysql", "root:1281@/electronica?charset=utf8&parseTime=True&loc=Local")

    if(err != nil){
        panic(err)
    }else{
        fmt.Println("Conexión obtenida")
    }

    prod := &productos{}

    db.First(&prod)

    fmt.Println(prod.codigo)

    db.Close()
}

使用以下代码片段:

type Productos struct {
    gorm.Model
    // Remove the ProductoID field if you want to use the default gorm Model
    // ProductoID int     `gorm:"type:int, primary_key"`
    Stock       int     `gorm:"type:int"`
    Codigo      string  `gorm:"type:varchar(45)"`
    Rubro       string  `gorm:"type:varchar(100)" `
    Descripcion string  `gorm:"type:varchar(140)" `
    Proveedores string  `gorm:"type:varchar(250)" `
    Moneda      string  `gorm:"type:varchar(10)" `
    Costo       float32 `gorm:"type:decimal" `
    Iva         float32 `gorm:"type:decimal" `
    Pedir       bool    `gorm:"type:tinyint" `
}

func main() {
    db, err := gorm.Open("mysql", "root:admin123@/test?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    if !db.HasTable(&Productos{}) {
        if err := db.AutoMigrate(&Productos{}).Error; err != nil {
        }
        db.Create(&Productos{
            Stock:       2,
            Codigo:      "a",
            Rubro:       "b",
            Descripcion: "c",
            Proveedores: "d",
            Moneda:      "e",
            Costo:       0,
            Iva:         0,
        })
    }

    producto := &Productos{}
    db.First(producto)

    fmt.Printf("%+v\n", producto)
}

就像@Burak Serdar 指出的那样,您的字段未导出(未大写),因此在您的情况下,它们对 gorm

不可见

In Go, a name is exported if it begins with a capital letter. Any "unexported" names are not accessible from outside the package.

围棋之旅的更多信息:Exported names

我得到了答案。我的问题是: 我包括默认的 Gorm 模型,这不等于数据库,当把它放出来时,工作正常

真的很抱歉我的英语不好