希望这是我与指针有关的最后一个问题:我正在调用存储库方法来获取一部分健身房课程。我在这样的视图中显示它们: {{ range .}} {{.VideoPath}} << Correct <br> {{.Instructor.Email}} << Blank <br> {{.ClassType.ClassTypeCode}} << Blank {{end}} 教师和类类型字段作为空结构出现,但在 ClassRepository 中我做了一些 Printlns 并打印了正确的数据。某处存在指针问题或其他问题。我做错了什么?这是存储库:package repositories type ClassRepository struct { Gorp gorp.SqlExecutor}func (c ClassRepository) ClassesForLastNDays(days int) []entities.Class { var classes []entities.Class // Gets the classes - omitted for brevity c.populateClassRelationships(classes) return classes}func (c ClassRepository) populateClassRelationships(classes []entities.Class) { for i := range classes { class := classes[i] // ClassType obj, err := c.Gorp.Get(entities.ClassType{}, class.ClassTypeCode) if err != nil { panic(err) } class.ClassType = *obj.(*entities.ClassType) fmt.Println(class.ClassType) << Returns correct data // Instructor and Equipment Same for instructor and Equipment }}更新:经过大量的 printlns,我可以确认问题出在 populateClassRelationships 之后,填充的值都丢失了。func (c ClassRepository) ClassesForLastNDays(days int) []entities.Class { var classes []entities.Class // Gets the classes - omitted for brevity c.populateClassRelationships(classes) <<<< In the method,Println has values return classes <<<< Values have been lost }
1 回答
精慕HU
TA贡献1845条经验 获得超8个赞
我相信问题在于您的函数populateClassRelationships没有修改原始数据结构,如以下最终输出的代码所示:
[1]
[]
不工作
func myFunc(data []int) {
data = append(data, 1)
fmt.Println(data)
}
func main() {
d := []int { }
myFunc(d)
fmt.Println(d)
}
引入参数作为指针可以修改原始数据
func myFuncNew(data *[]int) {
*data = append(*data, 1)
fmt.Println(*data)
}
- 1 回答
- 0 关注
- 192 浏览
添加回答
举报
0/150
提交
取消