3 回答

TA貢獻1829條經(jīng)驗 獲得超7個贊
甚至不確定它是否是 struct 的正確方法,因為在數(shù)組上它工作正常。
append 函數(shù)將元素追加到slice的末尾。
結(jié)構(gòu)是靜態(tài)聲明的。在 Go 中根本沒有辦法更改它們的結(jié)構(gòu)以在運行時向它們添加字段。
如果您想要一片 structs,您可以使用它來跟蹤結(jié)構(gòu)的多個表示,可能具有不同的數(shù)據(jù)點,您可以通過多種方式構(gòu)建該結(jié)構(gòu):
使用
append
,確保傳遞的第一個參數(shù)是一個(可能是空的)切片:a?:=?append([]aclStruct{},?aclStruct{"A"},?...)
聲明切片變量
a
并將其傳遞給append
:var?a?[]aclStruct{} a?=?append(a,?aclStruct{"A"},?...)
使用內(nèi)聯(lián)值聲明和初始化切片:
a?:=?[]aclStruct{{"A"},?{"B"}}
請注意,您不需要為每個切片元素重新指定具體類型,因為它可以從切片的類型中推斷出來)

TA貢獻2037條經(jīng)驗 獲得超6個贊
如果要聲明三個元素的切片,請使用: a := []aclStruct{aclStruct{"A"}, aclStruct{"B"}, aclStruct{"C"}}
append
應(yīng)該用于修改當(dāng)前存在的切片(它附加到切片)。它拋出一個錯誤,因為第一個參數(shù)應(yīng)該是一個切片。
如果你想使用它:
var a []aclStruct
append(a, aclStruct{"A"})
GoDoc 很好地回答了這個問題:
func append(slice []Type, elems ...Type) []Type
append 內(nèi)置函數(shù)將元素追加到切片的末尾。如果它有足夠的容量,則重新切片目的地以容納新元素。如果沒有,將分配一個新的底層數(shù)組。Append 返回更新后的切片。因此有必要存儲追加的結(jié)果,通常在保存切片本身的變量中:
slice = append(slice, elem1, elem2)
slice = append(slice, anotherSlice...)

TA貢獻1821條經(jīng)驗 獲得超6個贊
append 的第一個參數(shù)必須是一個切片,所以正確的做法是: 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 關(guān)注
- 186 瀏覽
添加回答
舉報