尝试在切片指针上进行范围时,我不断收到此错误。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 关注
 - 351 浏览
 
添加回答
举报
0/150
	提交
		取消
	