range后面的指针变量可以不解引用使用

更正

这一节最后一段代码,原书中的a是没有解引用的:
(a 前面的 * 去掉)

func Sum(a *[3]float64) (sum float64) {
    for _, v := range a { // derefencing *a to get back to the array is not necessary!
        sum += v
    }
    return
}

疑惑

试着运行了下,两种方式得到的结果都一样,为什么range后面的a可以不解引用,也可以循环取得里面的值呢?

Was mich nicht umbringt, macht mich stärker
最佳答案

你当作go会自动解除引用,方法属性都是a.x a.XX()直接就好,不想c调用属性就是c.x和c->x这样还分对象和指针两种。

3年前 评论
讨论数量: 4

:joy:这个是基础啊!回去看文档吧!

3年前 评论

你当作go会自动解除引用,方法属性都是a.x a.XX()直接就好,不想c调用属性就是c.x和c->x这样还分对象和指针两种。

3年前 评论

这个是语法糖, 不用纠结

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!