3 回答

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

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

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