3 回答
TA贡献1829条经验 获得超7个赞
甚至不确定它是否是 struct 的正确方法,因为在数组上它工作正常。
append 函数将元素追加到slice的末尾。
结构是静态声明的。在 Go 中根本没有办法更改它们的结构以在运行时向它们添加字段。
如果您想要一片 structs,您可以使用它来跟踪结构的多个表示,可能具有不同的数据点,您可以通过多种方式构建该结构:
使用
append
,确保传递的第一个参数是一个(可能是空的)切片:a := append([]aclStruct{}, aclStruct{"A"}, ...)
声明切片变量
a
并将其传递给append
:var a []aclStruct{} a = append(a, aclStruct{"A"}, ...)
使用内联值声明和初始化切片:
a := []aclStruct{{"A"}, {"B"}}
请注意,您不需要为每个切片元素重新指定具体类型,因为它可以从切片的类型中推断出来)
TA贡献2037条经验 获得超6个赞
如果要声明三个元素的切片,请使用: a := []aclStruct{aclStruct{"A"}, aclStruct{"B"}, aclStruct{"C"}}
append
应该用于修改当前存在的切片(它附加到切片)。它抛出一个错误,因为第一个参数应该是一个切片。
如果你想使用它:
var a []aclStruct
append(a, aclStruct{"A"})
GoDoc 很好地回答了这个问题:
func append(slice []Type, elems ...Type) []Type
append 内置函数将元素追加到切片的末尾。如果它有足够的容量,则重新切片目的地以容纳新元素。如果没有,将分配一个新的底层数组。Append 返回更新后的切片。因此有必要存储追加的结果,通常在保存切片本身的变量中:
slice = append(slice, elem1, elem2)
slice = append(slice, anotherSlice...)
TA贡献1821条经验 获得超6个赞
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...}
- 3 回答
- 0 关注
- 130 浏览
添加回答
举报