Załóżmy, że mam te typy:
type Attribute struct {
Key, Val string
}
type Node struct {
Attr []Attribute
}
i że chcę iterować na atrybutach mojego węzła, aby je zmienić.
Bardzo chciałbym móc:
for _, attr := range n.Attr {
if attr.Key == "href" {
attr.Val = "something"
}
}
ale ponieważ attr
nie jest wskaźnikiem, to nie zadziała i muszę zrobić:
for i, attr := range n.Attr {
if attr.Key == "href" {
n.Attr[i].Val = "something"
}
}
Czy jest prostszy lub szybszy sposób? Czy można bezpośrednio uzyskać wskazówki range
?
Oczywiście nie chcę zmieniać struktur tylko dla iteracji, a bardziej szczegółowe rozwiązania nie są rozwiązaniami.
forEach
typów ogólnych, obawiam się, że funkcja przekazana do musi zaczynać się od asercji typu. To nie jest lepsze niż attr := &n.Attr[i]
.
Array.prototype.forEach
w JavaScript?