Изменить значения во время итерации в golang

Предположим, у меня есть эти типы:

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?

Очевидно, что я не хочу менять структуры только для итерации, и более подробные решения не являются решениями.