gpt4 book ai didi

golang gorp 插入 panic

转载 作者:IT王子 更新时间:2023-10-29 01:33:32 31 4
gpt4 key购买 nike

您好,我正在使用 gorp 和 mysql。当插入 struct gorp 时返回

reflect.Value.Interface: 无法返回从未导出的字段或方法中获取的值

在 gorp 文档中说如果列表中的任何接口(interface)还没有用 AddTable 注册就会出现 panic 但是我添加了这个结构

这个问题是 BUS 结构有方法吗??我的程序和我 panic 帮助我

 type BUS struct {
Id int64 `db:"Idx"`
Created int64
Writer string `db:"Writer"`
WriterId int64
Title string `db:"Title"`
Content string `db:"Content"`
Want int64
status int64
}
func (b BUS) search(bf Board_find) []BUS {
var arr []BUS
query, query_map := bf.Prepare()
_, err := dbmap.Select(&arr, query, query_map)
if err != nil {
log.Print(err)
}
return arr
}

func (b* BUS) write() {
log.Print(reflect.TypeOf(b)) //just test code
err := dbmap.Insert(b)
check_err(err, "error in bus write")
}


func make_dbmap() *gorp.DbMap {
db, err := sql.Open("mysql", "tester:tester@tcp(127.0.0.1:3306)/TEST")
check_err(err, "db connection error")
log.Println("db connection Ok")

dialect := gorp.MySQLDialect{"InnoDB", "UTF8"}
dbmap := &gorp.DbMap{Db: db, Dialect: dialect}

AddTable(dbmap, USER_DB{}, "USER")
table := AddTable(dbmap, BUS{}, "BUSBOARD")
table.ColMap("Writer").SetMaxSize(10)
table.ColMap("Title").SetMaxSize(25)
table.ColMap("Content").SetMaxSize(50)
log.Println("Add Table in gorp Ok")
return dbmap
}

最佳答案

这个错误; reflect.Value.Interface: cannot return value obtained from unexported field or method 最有可能是因为 status int64 未导出(至少我没有看到其他未导出的字段可能导致它)。修复就像大写的 Status 一样简单。

在 Go 中,大写名称的结构字段会被导出,而小写名称的字段则不会。未导出的字段是语言中最接近“私有(private)”字段的东西。在这种情况下,gorp 或任何抛出错误的东西都反射(reflect)了你的类型,找到了状态字段并试图返回它,这是你出错的时候,因为该字段未导出。

关于golang gorp 插入 panic ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31322945/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com