type MusicManager struct {
musics []MusicEntry
}
func (m *MusicManager) Get(index int) (music *MusicEntry, err error) {
if index < 0 || index >= len(m.musics) {
return nil, errors.New("Index out of range.")
}
return &m.musics[index], nil
}
func (m *MusicManager) Add(music *MusicEntry) {
m.musics = append(m.musics, *music)
}
go语言编程这本书中的音乐库的示例
请问这里add 为什么要引用 MusicEntry ??
有疑问加站长微信联系(非本文作者)

结构中有
MusicEntry
,add 进来不是应该的吗?要不然呢?修正一下,我意思是 为什么是这样 append(m.musics, *music) 而不是应该 append(m.musics, music)
因为m.musics是[]MusicEntry类型的,所以所以append的元素必须是MusicEntry类型的,Add(music MusicEntry) 方法传入的参数music是指针类型MusicEntry,需要使用从指针中取出值,即*music
通过指针传递,可以防止参数传递时的数据拷贝消耗
此楼正解 上面的回答答所非问
楼主说的是:
正解