Giả sử tôi có những loại này:
type Attribute struct {
Key, Val string
}
type Node struct {
Attr []Attribute
}
và rằng tôi muốn lặp lại các thuộc tính của nút để thay đổi chúng.
Tôi rất thích có thể làm:
for _, attr := range n.Attr {
if attr.Key == "href" {
attr.Val = "something"
}
}
nhưng attr
không phải là một con trỏ, điều này sẽ không hoạt động và tôi phải làm:
for i, attr := range n.Attr {
if attr.Key == "href" {
n.Attr[i].Val = "something"
}
}
Có cách nào đơn giản hơn hay nhanh hơn? Có thể trực tiếp nhận được con trỏ từ range
?
Rõ ràng tôi không muốn thay đổi các cấu trúc chỉ cho lần lặp và các giải pháp dài dòng hơn không phải là giải pháp.
forEach
sẽ nhất thiết phải bắt đầu bằng một xác nhận kiểu. Điều đó không thực sự tốt hơn attr := &n.Attr[i]
.
Array.prototype.forEach
trong JavaScript?