gpt4 book ai didi

go - append() 到在 golang 中只有一个 slice 字段的结构

转载 作者:IT王子 更新时间:2023-10-29 00:54:27 25 4
gpt4 key购买 nike

我想将一个元素附加到仅由一个匿名 slice 组成的结构:

package main

type List []Element

type Element struct {
Id string
}

func (l *List) addElement(id string) {
e := &Element{
Id: id,
}
l = append(l, e)
}

func main() {
list := List{}
list.addElement("test")
}

那是行不通的,因为 addElement 不知道 l 是 slice 而是 *List:

go run plugin.go
# command-line-arguments
./plugin.go:13: first argument to append must be slice; have *List

最有可能工作的是这样:

type List struct {
elements []Element
}

并相应地修复 addElement 函数。我有比这更好的方法,例如。一个让我保留类型 List 的第一个定义的?

非常感谢,sontags

最佳答案

两个问题,

  1. 您要将 *Element 附加到 []Element,使用 Element{} 或将列表更改为 []*元素

  2. 您需要取消引用 addElement 中的 slice 。

Example :

func (l *List) addElement(id string) {
e := Element{
Id: id,
}
*l = append(*l, e)
}

关于go - append() 到在 golang 中只有一个 slice 字段的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com