Предположим, у меня есть эти типы:
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
?
Очевидно, я не хочу менять структуры только для итерации, и более подробные решения не являются решениями.
forEach
должна начинаться с утверждения типа. Это не совсем лучше, чем attr := &n.Attr[i]
.
Array.prototype.forEach
в JavaScript?