迭代时更改值

假设我有这些类型:


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?


显然,我不想仅仅为了迭代而改变结构,更详细的解决方案是没有解决方案的。


FFIVE
浏览 157回答 3
3回答

慕田峪4524236

我会调整您的最后一个建议并使用仅索引版本的范围。for i := range n.Attr {    if n.Attr[i].Key == "href" {        n.Attr[i].Val = "something"    }}对我来说,n.Attr[i]在测试Key行和设置行中明确引用似乎更简单Val,而不是使用attrfor 一个和n.Attr[i]另一个。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go