1 回答
TA贡献1995条经验 获得超2个赞
程序用变量 的地址填充切片。一种解决方法是使用切片元素的地址:ele
func GetBooksByGenre(genre string) []*model.Book {
var response []*model.Book
for i, ele := range books {
if ele.Genre == genre {
response = append(response, &books[i])
}
}
return response
}
另一个修复方法是更改为 而不是 .将此代码与该更改一起使用:books[]*model.Book[]model.Book
func GetBooksByGenre(genre string) []*model.Book {
var response []*model.Book
for _, ele := range books {
if ele.Genre == genre {
response = append(response, ele)
}
}
return response
}
另一个解决方法是为每次迭代创建一个新变量,并使用该变量的地址:
func GetBooksByGenre(genre string) []*model.Book {
var response []*model.Book
for _, ele := range books {
if ele.Genre == genre {
ele := ele // <-- new variable
response = append(response, &ele)
}
}
return response
}
您可能希望在此处介绍前两个选项之一。
- 1 回答
- 0 关注
- 74 浏览
添加回答
举报