猿问

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

我正在尝试使用 Gorp 来参加所有体育课。健身房类有一个类类型,所以我运行第二个查询来检索它们。我取回了所有的类类型,但由于某种原因,最终的评估不起作用。


package entities


import (

    "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

}


慕侠2389804
浏览 233回答 1
1回答

素胚勾勒不出你

分配工作正常,但您没有将其分配给正确的对象:在您的循环中for _, class := range classes { classTypeForClass(dbmap, &class) }class是切片中元素的副本classes。您classTypeForClass(dbmap, &class)正确地将类分配给此副本,并在循环体的末尾丢弃该副本。尝试类似的东西for i := range classes {&nbsp; &nbsp; classTypeForClass(dbmap, &(classes[i]))}或者更好:让 classTypeForClass 返回类并像这样分配它for i := range classes {&nbsp; &nbsp; classes[i].ClassType = classTypeForClass(dbmap, &(classes[i]))}(甚至可能将类作为值传递,而不是作为指针传递。)
随时随地看视频慕课网APP

相关分类

Go
我要回答