Alterar valores ao iterar em golang

Vamos supor que eu tenha esses tipos:

type Attribute struct {
    Key, Val string
}
type Node struct {
    Attr []Attribute
}

e que eu quero iterar nos atributos do meu nó para alterá-los.

Eu adoraria poder fazer:

for _, attr := range n.Attr {
    if attr.Key == "href" {
        attr.Val = "something"
    }
}

mas comoattr não é um ponteiro, isso não funcionaria e eu tenho que fazer:

for i, attr := range n.Attr {
    if attr.Key == "href" {
        n.Attr[i].Val = "something"
    }
}

Existe uma maneira mais simples ou mais rápida? É possível obter diretamente ponteiros derange?

Obviamente, não quero alterar as estruturas apenas para a iteração e soluções mais detalhadas não são soluções.

questionAnswers(4)

yourAnswerToTheQuestion