Go 如何使用append或不使用append向struct添加更多数据?

Go 如何使用append或不使用append向struct添加更多数据?,go,Go,我们可以使用Golang内置的append方法将更多数据添加到定义的结构中。e、 g type aclStruct struct { acl string} a := []aclStruct{aclStruct{"A"}, aclStruct{"B"}} a = append(a, aclStruct{"C"}) 毫无疑问,它起作用了。但当我尝试不使用append方法时,它产生了一个错误。例如 我想做的是: a := append(aclStruct{"A"}, aclStruct{"B"

我们可以使用Golang内置的append方法将更多数据添加到定义的结构中。e、 g

type aclStruct struct { acl string}

a := []aclStruct{aclStruct{"A"}, aclStruct{"B"}}

a = append(a, aclStruct{"C"})
毫无疑问,它起作用了。但当我尝试不使用append方法时,它产生了一个错误。例如

我想做的是:

a := append(aclStruct{"A"}, aclStruct{"B"}, aclStruct{"C"})
甚至不确定它是否是struct的正确方法,因为它在数组上运行良好。还有没有不使用append的方法来实现这一点


任何帮助???

append的第一个参数必须是一个切片,因此正确的方法是:
a:=append([]aclStruct{aclStruct{“a”},aclStruct{“B”},aclStruct{“C”})

append([]aclStruct{{“A”},aclStruct{“B”},aclStruct{“C”})

无需追加的一种方法是:

a := []aclStruct{aclStruct{"A"}, aclStruct{"B"}}
appendedArray := []aclStruct{aclStruct{"C"}, a...}

如果要声明三个元素的切片,请使用:

a:=[]aclStruct{aclStruct{a},aclStruct{B},aclStruct{C}

append
应用于修改当前存在的切片(它附加到切片)。它抛出了一个错误,因为第一个参数应该是一个切片

如果您想使用它:

var a[]aclStruct
追加(a,aclStruct{“a”})

GoDoc很好地回答了这个问题:

func追加(切片[]类型,元素…类型)[]类型

append内置函数将元素追加到片段的末尾。如果目的地具有足够的容量,则会重新许可该目的地以容纳新元素。否则,将分配一个新的底层数组。Append返回更新的切片。因此,有必要将append的结果存储在保存切片本身的变量中:

slice=append(slice,elem1,elem2)
切片=附加(切片,另一个切片…)

甚至不确定它是否是struct的正确方法,因为它在数组上运行良好

将元素附加到切片的末尾

结构是静态声明的。在Go中根本没有办法改变它们的结构,在运行时向它们添加字段

如果需要一个结构切片,可以使用它跟踪结构的多个表示形式(可能具有不同的数据点),可以通过以下几种方式构建该结构:

  • 使用
    append
    ,确保传递的第一个参数是一个(可能是空的)切片:

  • 声明切片变量
    a
    ,并将其传递给
    append

    var a []aclStruct{}
    a = append(a, aclStruct{"A"}, ...)
    
  • 使用内联值声明和初始化切片:

    a := []aclStruct{{"A"}, {"B"}}
    
    注意,您不需要为每个切片元素重新指定具体类型,因为它可以从切片的类型推断出来)


a:=[]aclStruct{aclStruct{a},aclStruct{B},aclStruct{C}
append的第一个参数应该是一个切片。append就是这样工作的。它将元素附加到切片。Go教程可能会更详细地解释切片以及如何操作切片。第一个参数必须是切片,而不是数组
append
不接受数组。另外,第二个示例无效,您不能在数组或切片文本中使用
..
语法。
a := []aclStruct{{"A"}, {"B"}}