---
golang中for range经常会被用来遍历slice、map、chan、array,但是由于在某些情况下,其内部实现并不是你想的那样,所以使用时还是需要特别注意。...以下是两个错误使用for range的场景
场景1 - 在for range中获取循环变量的地址
代码
package main
func main() {
vals := []int{0, 1,...range循环只会为v分配一次内存,后续只是给v赋值;跟for的语义是一样一样的,如下这样理解起来就容易多了。...1中那样,v的地址虽然没变,但是值会随着循环变化。...同时,在场景2中,go vet会有对应的提示:
./main.go:19:27: loop variable v captured by func literal
在出现以上提示时,需要特别小心。