美文网首页深入浅出golangGo知识库
golang地址重用,处理for循环要小心

golang地址重用,处理for循环要小心

作者: funcx | 来源:发表于2018-05-16 14:43 被阅读18次

package main

import (
"fmt"
)

type Person struct {
Name string
}

func main() {
ps := []Person{Person{"a"}, Person{"b"}, Person{"b"}}
for _, p := range ps {
fmt.Printf("%p\n", &p)
}
}
输出:
0xc42008a030
0xc42008a030
地址相同

相关文章

网友评论

  • 不喜欢夜雨天:你这是闭包的坑,和语言无关。 p这个地址会一直存在,在每一次循环中都代表了当前的值,地址是不会变的。
    funcx:@不喜欢夜雨天 所以使用函数时,要传值才行了

本文标题:golang地址重用,处理for循环要小心

本文链接:https://www.haomeiwen.com/subject/ervpdftx.html