在go语言中 注意for循环陷阱
目前的理解是
在for循环中 包括 for range
是独立的作用域,内部声明的变量会在for循环结束后释放内存,既消失掉
for作用域内所有声明的变量可以看作是一个调用函数体内的声明变量,也就是说,for作用域内可以声明与for循环外部已经声明变量相同名字的变量,并且在for循环内,以该变量为默认值。当退出for循环后,再次调用该变量时就会调用原本声明的,即for作用域外的变量。
经实验,内存地址是问题的关键。
作用域内变量共享同一内存地址,结束后全部释放。 出现与作用域外同名变量时,也会创建新的内存地址,并在for循环结束后释放。