假設我有以下幾種類型:type Attribute struct { Key, Val string}type Node struct { Attr []Attribute}我想迭代節點的屬性以更改它們。我本來希望能夠做到:for _, attr := range n.Attr { if attr.Key == "href" { attr.Val = "something" }}但是因為attr不是指針,所以這行不通,我必須這樣做:for i, attr := range n.Attr { if attr.Key == "href" { n.Attr[i].Val = "something" }}有沒有更簡單或更快速的方法?是否可以直接從中獲取指針range?顯然,我不想僅僅為了迭代而更改結構,更冗長的解決方案不是解決方案。
3 回答

慕運維8079593
TA貢獻1876條經驗 獲得超5個贊
我會采納您的最后建議,并使用范圍的僅索引版本。
for i := range n.Attr {
if n.Attr[i].Key == "href" {
n.Attr[i].Val = "something"
}
}
對我來說,n.Attr[i]在測試Key行和設置行中明確引用似乎更簡單Val,而不是attr用于一個和n.Attr[i]另一個。
添加回答
舉報
0/150
提交
取消