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 關注
- 85 瀏覽
添加回答
舉報