将元素附加到结构 [duplicate] 的切片

Go appending elements to slice of struct [duplicate]

提问人:LTX 提问时间:12/26/2022 更新时间:12/26/2022 访问量:78

问:

我正在尝试将元素附加到结构的切片,但它返回错误invalidAppend,这意味着我传递的第一个参数不是切片。

链接到 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)
}

我不知道如何进行此附加的正确方法。

go struct append slice

评论


答:

1赞 rocka2q 12/26/2022 #1

我通过的第一个论点不是切片

第一个参数是指向切片的指针。

type ItemsList []Item

func (il *ItemsList) AddItem(i Item) {
  il = append(il, i)
}

第一个参数是切片。

func (il *ItemsList) AddItem(i Item) {
    *il = append(*il, i)
}

https://go.dev/play/p/Se2ZWcucQOp


Go 编程语言规范

地址运算符

对于指针类型为 *T 的操作数 x,指针间接 *x 表示 x 指向的类型 T 的变量。