สมมติว่าฉันมีประเภทเหล่านี้:
type Attribute struct {
Key, Val string
}
type Node struct {
Attr []Attribute
}
และฉันต้องการที่จะทำซ้ำในคุณลักษณะของโหนดเพื่อเปลี่ยนพวกเขา
ฉันอยากจะทำ:
for _, attr := range n.Attr {
if attr.Key == "href" {
attr.Val = "something"
}
}
แต่เนื่องจากattr
ไม่ใช่ตัวชี้สิ่งนี้จะไม่ทำงานและฉันต้องทำ:
for i, attr := range n.Attr {
if attr.Key == "href" {
n.Attr[i].Val = "something"
}
}
มีวิธีที่ง่ายขึ้นหรือเร็วขึ้น? เป็นไปได้range
หรือไม่ที่จะได้รับพอยน์เตอร์โดยตรง
เห็นได้ชัดว่าฉันไม่ต้องการที่จะเปลี่ยนโครงสร้างเพียงสำหรับการทำซ้ำและการแก้ปัญหา verbose มากขึ้นไม่มีการแก้ปัญหา
forEach
นั้นจำเป็นต้องเริ่มต้นด้วยการยืนยันประเภท มันไม่ได้ดีไปกว่าattr := &n.Attr[i]
นี้อีกแล้ว
Array.prototype.forEach
JavaScript ในรูปแบบใด?