我正在尝试使用 Gorp 来参加所有体育课。健身房类有一个类类型,所以我运行第二个查询来检索它们。我取回了所有的类类型,但由于某种原因,最终的评估不起作用。package entitiesimport ( "fmt" "github.com/coopernurse/gorp" "time")type Class struct { Id int ClassTypeId int ClassType ClassType VideoPath string VideoSize int Duration float64 CreatedAt time.Time VisibleAt time.Time NoLongerVisibleAt time.Time}func LatestClasses(dbmap *gorp.DbMap) *[]Class { var classes []Class query := "SELECT * FROM Class" _, err := dbmap.Select(&classes, query) if err != nil { panic(err) } for _, class := range classes { classTypeForClass(dbmap, &class) } return &classes}func classTypeForClass(dbmap *gorp.DbMap, class *Class) { var classType ClassType query := "SELECT * FROM ClassType " query += "WHERE Id=?" err := dbmap.SelectOne(&classType, query, class.ClassTypeId) if err != nil { panic(err) } fmt.Println(classType) <<<<<<<<<<< Lists Yoga, Pilates etc. class.ClassType = classType <<<<<<<< Seemingly does nothing}
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
分配工作正常,但您没有将其分配给正确的对象:在您的循环中
for _, class := range classes { classTypeForClass(dbmap, &class) }
class是切片中元素的副本classes。您classTypeForClass(dbmap, &class)正确地将类分配给此副本,并在循环体的末尾丢弃该副本。
尝试类似的东西
for i := range classes {
classTypeForClass(dbmap, &(classes[i]))
}
或者更好:让 classTypeForClass 返回类并像这样分配它
for i := range classes {
classes[i].ClassType = classTypeForClass(dbmap, &(classes[i]))
}
(甚至可能将类作为值传递,而不是作为指针传递。)
- 1 回答
- 0 关注
- 232 浏览
添加回答
举报
0/150
提交
取消