尝试在切片指针上进行范围时,我不断收到此错误。app/domain/repositories/class_repository.go:24: cannot range over classes (type *[]entities.Class)我究竟做错了什么?这是结构: package repositoriesimport ( "mobifit/app/domain/entities")type ClassRepository struct { *Repository}func (c *ClassRepository) ClassesForLastNDays(days int) *[]entities.Class { classes := new([]entities.Class) query := Select("*"). From("Class"). Where("VisibleAt > CURRENT_TIMESTAMP() - INTERVAL ? DAY"). OrderBy("ClassTypeId"). Sql() c.Repository.Select(classes, query, days) c.populateClassRelationships(classes) return classes}func (c *ClassRepository) populateClassRelationships(classes *[]entities.Class) { for i := range classes { <<<<<<<<<<< Here is the problem class := classes[i] // ClassType c.Repository.GetById(class.ClassType, class.ClassTypeId) //Instructor c.Repository.GetById(class.Instructor, class.ClassType.InstructorId) // Equipment query := Select("E.*"). From("Equipment E"). Join("ClassEquipment CE on E.Id = CE.EquipmentId"). Where("CE.ClassId = ?"). Sql() c.Repository.Select(class.Equipment, query, class.Id) }}
3 回答

FFIVE
TA贡献1797条经验 获得超6个赞
您假设指向切片的指针将在迭代中自动取消引用。
事实并非如此,也没有理由这样做,因为切片已经是一种指针,因此将指向切片的指针完全无用。
从有效围棋:
如果一个函数接受一个切片参数,它对切片元素所做的更改将对调用者可见,类似于传递一个指向底层数组的指针。
在内部,切片由
指向底层数组中切片的第一个元素的指针
切片的长度
切片的容量(切片通常可以扩展到数组末尾)
这个结构非常小,使指针无用。
- 3 回答
- 0 关注
- 317 浏览
添加回答
举报
0/150
提交
取消