Используйте следующий фрагмент кода:
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.
Дополнительная информация из тура Go: Экспортированные имена