- 此问题在此处已有答案**:
Builtin func "append" in method for pointer receiver(2个答案)
Possible to add an append method to a slice(1个答案)
Go Pointers - append values to slice via pointer(3个答案)
How to append to a slice pointer receiver(1个答案)
How do you append data to array struct with * pointer(2个答案)
昨天关门了。
我试图将元素附加到一个结构体的切片上,但是它返回了错误,这意味着我传递的第一个参数不是切片。
Link to Go Playground.
下面是代码:
type Item struct {
Attr string
}
type ItemsList []Item
type IItemsList interface {
GetItemsList() ItemsList
AddItem(Item)
}
func NewItemsList() IItemsList {
return &ItemsList{}
}
func (il *ItemsList) GetItemsList() ItemsList {
return *il
}
func (il *ItemsList) AddItem(i Item) {
il = append(il, i)
}
我想不出如何正确的方式来进行这个附加。
1条答案
按热度按时间kb5ga3dv1#
传递的第一个参数不是切片
第一个参数是指向切片的指针。
第一个参数是切片。
https://go.dev/play/p/Se2ZWcucQOp
The Go Programming Language Specification
地址运算符
对于指针类型 *T的操作数x,指针间接 *x表示x所指向的类型T的变量。