好吧,我们可以使用Golang内置的append方法将更多数据添加到已定义的结构中。例如
type aclStruct struct { acl string}
a := []aclStruct{aclStruct{"A"}, aclStruct{"B"}}
a = append(a, aclStruct{"C"})
毫无疑问它正在发挥作用。但是当我尝试没有追加方法时,它会产生错误。例如。
我想要做的是:
a := append(aclStruct{"A"}, aclStruct{"B"}, aclStruct{"C"})
即使不确定它是否是结构的正确方法,因为在数组上它可以正常工作。有没有办法这样做而不使用追加?
任何帮助?
即使不确定它是否是结构的正确方法,因为在数组上它可以正常工作。
qazxsw poi将元素附加到切片的末尾。
结构是静态声明的。 Go中没有办法改变它们的结构,以便在运行时向它们添加字段。
如果您想要一块结构(可用于跟踪结构的多个表示,可能具有不同的数据点),您可以通过多种方式构建该结构:
append
a := append([]aclStruct{}, aclStruct{"A"}, ...)
并将其传递给a
:
append
var a []aclStruct{}
a = append(a, aclStruct{"A"}, ...)
请注意,您不需要为每个切片元素重新指定具体类型,因为它可以从切片的类型推断出来)如果要声明三个元素的切片,请使用:a := []aclStruct{{"A"}, {"B"}}
a := []aclStruct{aclStruct{"A"}, aclStruct{"B"}, aclStruct{"C"}}
应该用于修改当前存在的切片(它附加到切片)。它抛出一个错误,因为第一个参数应该是一个切片。
如果你想使用它:
append
GoDoc很好地回答了这个问题:
var a []aclStruct
append(a, aclStruct{"A"})
附加内置函数将元素附加到切片的末尾。如果它具有足够的容量,则会复制目标以容纳新元素。如果没有,将分配新的底层数组。 Append返回更新的切片。因此有必要存储append的结果,通常在保存切片本身的变量中:
func append(slice []Type, elems ...Type) []Type
append的第一个参数必须是一个切片,所以正确的方法是:slice = append(slice, elem1, elem2)
slice = append(slice, anotherSlice...)
要么
a := append([]aclStruct{aclStruct{"A"}}, aclStruct{"B"}, aclStruct{"C"})
一种无需附加的方式是:
append([]aclStruct{{"A"}}, aclStruct{"B"}, aclStruct{"C"})