Go 如何使用append或不使用append向struct添加更多数据?
我们可以使用Golang内置的append方法将更多数据添加到定义的结构中。e、 gGo 如何使用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"
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"}}