为了账号安全,请及时绑定邮箱和手机立即绑定

Golang将结构分配给另一个结构字段不起作用

Golang将结构分配给另一个结构字段不起作用

Go
慕侠2389804 2021-07-14 12:13:37
我正在尝试使用 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]))

}

(甚至可能将类作为值传递,而不是作为指针传递。)



查看完整回答
反对 回复 2021-07-19
  • 1 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信