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

Golang将结构分配给另一个结构字段不起作用,go,Go,我正试图用Gorp去上所有的体育课。体育课有一个类类型,所以我运行第二个查询来检索它们。我收回了所有的课程类型,但由于某种原因,期末考试不起作用 package entities import ( "fmt" "github.com/coopernurse/gorp" "time" ) type Class struct { Id int ClassTypeId int ClassType

我正试图用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

另一个更新 我将数据显示如下:

<h1>
    Latest Classes
</h1>
<hr/>


{{ range .}}
    {{.VideoPath}}
    <br>
    {{.ClassType.Name}}
    <br>
    {{.VideoSize}}
    <br>
    {{.Duration}}
    <br>
    {{.CreatedAt}}
    {{.NoLongerVisibleAt}}
<br><br>
{{end}}

最新课程

{{range.}} {{.VideoPath}
{{.ClassType.Name}
{{.VideoSize}
{{.Duration}
{{.CreatedAt} {{.NOLONGERVIBLEAT}

{{end}
分配工作正常,但您没有将其分配给适当的对象: 在你的圈子里

对于u,类:=范围类{ classTypeForClass(dbmap和类) }

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]))
}

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

显示
类类型定义。我添加了类类型定义。为什么说赋值不起作用?如何验证?我添加了html代码段,您在哪里向模板传递类结构?
for i := range classes {
    classes[i].ClassType = classTypeForClass(dbmap, &(classes[i]))
}