需要帮助了解如何更新包含在结构中并传递给函数的切片。
函数 addBookToShelfInLibrary(l *library,shelfid int, b book) - 将图书馆作为输入,尝试将书籍添加到 id = shelfid 的书架(作为参数传递)。该函数附加到书籍数组并将其分配给书籍数组。我错过了什么?
在代码运行结束时,我希望这些书包含两本书,“harrypotter”,“bible”,但我只看到一本书,即 harrypotter。另外,我正在传递一个指向库的指针,但我认为在这种情况下这并不重要。
操场代码:- https://play.golang.org/p/JrjtLSj-jHI
func main() {
lib := library{
shelves: []shelf{
{
id: 1,
books: []book{
{name: "harrypotter"},
},
},
},
}
addBookToShelfInLibrary(&lib, 1, book{name: "bible"})
fmt.Printf("%v", lib)
}
type library struct {
shelves []shelf
}
type shelf struct {
id int
books []book
}
type book struct {
name string
}
func addBookToShelfInLibrary(l *library, shelfid int, b book) {
for _, s := range (*l).shelves {
if s.id == shelfid {
//found shelf, add book
s.books = append(s.books, b)
}
}
}
www说
相关分类