项目 #32 忽略在范围循环中使用指针元素的影响 - 在 Go 1.22 之后不再相关
作者: iypetrov创建于 2026年1月17日更新于 2026年1月31日
标签community mistake
从 Go 1.22 版开始, range 循环声明的迭代变量在每次迭代中都会重新创建,而不是在多次迭代中重复使用。由于这个原因,第一个使用 Store 和 Client 结构的示例不会返回
key=1, value=&main.Customer{ID:"3", Balance:0}
key=2, value=&main.Customer{ID:"3", Balance:0}
key=3, value=&main.Customer{ID:"3", Balance:0}而是返回
key=1, value=&main.Customer{ID:"1", Balance:10}
key=2, value=&main.Customer{ID:"2", Balance:-10}
key=3, value=&main.Customer{ID:"3", Balance:0}我认为,对于代码示例做一个小的注释就足以警告读者了。
内容来源: teivah/100-go-mistakes