zoukankan      html  css  js  c++  java
  • gorm的使用以及错误记录

    package main
    import (
    	   "fmt"
    	    "github.com/jinzhu/gorm"
    	    "github.com/sirupsen/logrus"
            _ "github.com/jinzhu/gorm/dialects/sqlite"
            "encoding/json"
            _ "reflect"
    
    )
    
    type Product struct {
    	gorm.Model
    	Code string
    	Price uint
    }
    
    func main() {
    	fmt.Println("in main")
    	db,err :=gorm.Open("sqlite3","test.db")
    	if err!=nil{
    		panic("数据库连接失败")
    	}
    	defer db.Close()
    	//创建
    	db.AutoMigrate(&Product{})
        product:=&Product{Code: "L123",Price:1000}
    
        json_p,err:= json.Marshal(product)
            if err != nil {
        }
        logrus.Infof("json_p %v",string(json_p))
       //使用where的时候,后面需要使用Find指定当前表的model,也就是结构体。
        result:=db.Where("code=?","L123").Find(product)
       //go  type interface {} is interface with no method问题解决
        logrus.Infof("result %v",result.Value.(*Product).Price)
    	db.First(product,1)
    	db.First(product,"code = ?","L123")
    	db.Model(product).Update("Price",3000)
    	db.Delete(product)
    }
    

    go type interface {} is interface with no methods
    因为返回的是interface类型,需要做转换才能使用
    result.Value.(Product) 就是将interface{}专为Product之后再获取其Price字段的值。

  • 相关阅读:
    Linux中的中断处理
    Yocto使用小技巧
    udev学习笔记汇总
    USB gadget学习笔记
    Linux常用命令
    Linux下软件安装方法
    278. First Bad Version
    MySQL的索引
    7. Reverse Integer
    排序算法
  • 原文地址:https://www.cnblogs.com/c-x-a/p/12275087.html
Copyright © 2011-2022 走看看