尽管在循环迭代期间操作结构体中的元素,但更新在退出循环时无法持久。了解此行为背后的原因对于正确的结构操作至关重要。
迭代结构体切片时,循环变量引用原始元素的副本,而不是元素本身。因此,循环内所做的任何修改只会影响副本,而不影响切片中的实际元素。
要成功更新结构体元素,可以使用以下方法:
这里是遵循解决方案的更新代码片段:
type FTR struct { Id string Mod []Mod } type Mod struct { Name string Type string } for index := range ftr.Mod { switch ftr.Mod[index].Type { case "aaa", "bbbb": ftr.Mod[index].Type = "cccc" case "htr": ftr.Mod[index].Type = "com" case "no": ftr.Mod[index].Type = "jnodejs" case "jdb": ftr.Mod[index].Type = "tomcat" } }
通过采用此方法,结构体元素将被成功更新,并且更改将在循环退出后持续存在。
以上是为什么我的结构更新在 Go 循环中不持久?的详细内容。更多信息请关注PHP中文网其他相关文章!