Cambia valores mientras iteran en golang

Supongamos que tengo estos tipos:

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

y que quiero iterar en los atributos de mi nodo para cambiarlos.

Me hubiera encantado poder hacer:

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

pero comoattr no es un puntero, esto no funcionaría y tengo que hacer:

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

¿Hay alguna forma más simple o más rápida? ¿Es posible obtener directamente los punteros derange?

Obviamente, no quiero cambiar las estructuras solo para la iteración y las soluciones más detalladas no son soluciones.

Respuestas a la pregunta(4)

Su respuesta a la pregunta