Giả sử tôi có các loại sau:Thay đổi giá trị trong khi lặp lại trong golang
type Attribute struct {
Key, Val string
}
type Node struct {
Attr []Attribute
}
và rằng tôi muốn lặp trên các thuộc tính nút của tôi để thay đổi chúng.
tôi đã có thể yêu để có thể làm:
for _, attr := range n.Attr {
if attr.Key == "href" {
attr.Val = "something"
}
}
nhưng như attr
không phải là một con trỏ, điều này sẽ không làm việc và tôi phải làm:
for i, attr := range n.Attr {
if attr.Key == "href" {
n.Attr[i].Val = "something"
}
}
Có một cách đơn giản hoặc nhanh hơn? Có thể trực tiếp nhận con trỏ từ range
không?
Rõ ràng là tôi không muốn thay đổi cấu trúc chỉ dành cho các giải pháp lặp lại và tiết kiệm hơn là không có giải pháp.
Vì vậy, bạn muốn một số loại 'Array.prototype.forEach' trong JavaScript? –
Đó là một ý tưởng thú vị và đó có thể là một giải pháp nhưng gọi một hàm sẽ lần lượt gọi hàm ở mỗi lần lặp lại trông nặng và sai ở ngôn ngữ phía máy chủ. Và thiếu các generics sẽ làm cho cảm giác này thậm chí còn nặng hơn. –
Thành thật mà nói, tôi không nghĩ nó nặng đến thế. Gọi một chức năng hoặc hai là rất rẻ, đây thường là những gì trình biên dịch tối ưu hóa nhất. Tôi sẽ thử nó và đánh giá nó để xem liệu nó có phù hợp với dự luật hay không. –