go-反射机制
发布时间:2021-04-29 编辑:jiaochengji.com
教程集为您提供go-反射机制等资源,欢迎您收藏本站,我们将为您提供最新的go-反射机制资源
思路
结构对象映射出来:类名,成员名,成员值
package dao import ( _ "ChbeeGoTest/models" "ChbeeGoTest/utils/myLog" "fmt" "reflect" "strings" ) type Dao struct { } var DaoInter = new(Dao) //将对象映射到表格中,返回主键ID func (this *Dao) Insert(obj interface{}) { //对象转表格 table := obj2table(obj) fmt.Println(table.TbName) //序列化列名 cloums := strings.Join(table.Cloum, ",") fmt.Println(cloums) //插入语句 stmt, err := Db.Prepare(`INSERT User(UserName,PassWord,TrueName,Mail,HeadImg,LastLogin,Coin) VALUES(?,?,?,?,?,?,?)`) if err != nil { myLog.Logger.Fatal(err) } res, err := stmt.Exec(table.values...) if err != nil { fmt.Print("插入失败") myLog.Logger.Fatal(err) } id, err := res.LastInsertId() fmt.Print("插入成功,插入的ID是:", id) } type table struct { TbName string //Fild map[string]interface{} Cloum []string values []interface{} } type User struct { PlayerId int UserName string PassWord string TrueName string Mail string HeadImg string LastLogin uint64 Coin int } //对象转成表 func obj2table(obj interface{}) *table { tb := new(table) typeObj := reflect.TypeOf(obj) //表名 tb.TbName = typeObj.Elem().Name() //列 //tb.Fild = make(map[string]interface{}) tb.Cloum = make([]string, 1) tb.values = make([]interface{}, 1) for i := 0; i < typeObj.Elem().NumField(); i { //列名 cloumName := typeObj.Elem().Field(i).Name tb.Cloum = append(tb.Cloum, cloumName) //列值 val := reflect.ValueOf(obj).Elem().FieldByName(cloumName) tb.values = append(tb.values, val) //装入map //tb.Fild[cloumName] = val } return tb }
到此这篇关于“go-反射机制”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
您可能感兴趣的文章:
Go语言学习之reflect包(The way to go)
Go语言之反射
图解 Go 反射实现原理
Go语言(十五) 反射
GO语言反射机制
C#反射的一些基本应用
golang的反射机制与实践(上)
go-反射机制
JavaScript反射机制与继承:概念
36. 图解:Go 语言的反射三定律,也没什么难的嘛
上一篇:Go语言基础之单元测试
下一篇:Go语言入门基础(一)
[关闭]