gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:07:40 26 4
gpt4 key购买 nike

我正在尝试使用 Gorp 获取所有体育类(class)。体育课有一个类(class)类型,所以我运行第二个查询来检索它们。我得到了所有的类类型,但由于某种原因最终的分配不起作用。

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

更新

ClassType 结构如下所示:

package entities

import (
"time"
)

type ClassType struct {
Id int
Code string
Name string
InstructorId int
CreatedAt time.Time
}

另一个更新

我显示的数据如下:

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


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

最佳答案

赋值工作正常,但您没有将它赋给正确的对象:在你的循环中

for _, class := range classes { classTypeForClass(dbmap, &class) }

classclasses slice 中元素的副本。您的 classTypeForClass(dbmap, &class) 正确地将类分配给此副本,并在循环体末尾丢弃该副本。

尝试类似的东西

for i := range classes {
classTypeForClass(dbmap, &(classes[i]))
}

或者可能更好:让 classTypeForClass 返回类并像这样分配它

for i := range classes {
classes[i].ClassType = classTypeForClass(dbmap, &(classes[i]))
}

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

关于Golang 将结构分配给另一个结构字段不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254381/

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