为什么我不能更改一系列类型结构中的值?
Go 编程语言规范规定,对于带有 a 的语句range 子句,“对于每个条目,它会将迭代值分配给相应的迭代变量(如果存在),然后执行块。”
在这种情况下,您使用 range 语句迭代结构切片。当你修改范围内结构体的字段时,你只是修改了迭代变量,而不是切片中的底层结构。
要修改底层结构,你需要直接使用索引来访问它迭代变量。
例如,以下代码正确修改切片中的值:
for i, elem := range chartRecords { elem.Count = modMe(mod, i) chartRecords[i] = elem fmt.Printf("No: %2d | Count: %2d | Name = %s\r\n", i, elem.Count, elem.Name) }
以上是为什么修改 Go Range 循环中的结构体不会改变原始切片?的详细内容。更多信息请关注PHP中文网其他相关文章!