请教一下for循环内部变量的处理机制,下面两份代码,第一份地址不会变,第二份就会变

ximen · · 1313 次点击
应该就是编译器优化了,对于第一个代码,在for中申明了一个s变量,且该s变量没有被引用,就可以复用,其实 for的短变量申明就是这么干的,比如: ```go for _,v := range []int{1,2,3} { println(&v) } ``` 这里就是复用了临时变量v,然后一直用这个变量
#11
更多评论
一个切片存的值,另一个存的指针(地址)啊
#1
第一个s在栈上分配的内存,然后拷贝过去 第二个s在堆上分配的内存 感觉是,没有验证,可以自己验证一下
#2