Q1mi / BlogComments

9 stars 0 forks source link

Go语言基础之结构体 | 李文周的博客 #162

Open Q1mi opened 2 years ago

Q1mi commented 2 years ago

https://www.liwenzhou.com/posts/Go/10-struct/

李文周的Blog

cocovs commented 2 years ago

面试题://stus在range遍历过程中 stu会对stus对应索引进行值拷贝 //而在这里是将stu的地址传递给 m , 因此 m 的值 指向同一片地址空间

leedocode commented 1 year ago

@cocovs 面试题://stus在range遍历过程中 stu会对stus对应索引进行值拷贝 //而在这里是将stu的地址传递给 m , 因此 m 的值 指向同一片地址空间

做个小的补充,Go中的for-range循环的循环变量是被重复利用的(也即变量的地址不变),也即面试题中的stu,是被循环利用的,也即每一次迭代时不同的stu是在同一块内存空间下的重新赋值,因此m的value始终都指向stu的这个不变的地址,不过这里有个疑问,就是stu这个局部变量的地址赋值给m后,stu这个变量的生命周期在for循环语句快之后就应该结束了,m的value所指向的那块内存的值有没有可能被清除或者被赋其他的值是我不太确定的点,如果有同学能解答,欢迎讨论