问答 / 2 / 4 / 创建于 4年前
这一节最后一段代码,原书中的a是没有解引用的:(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可以不解引用,也可以循环取得里面的值呢?
range
你当作go会自动解除引用,方法属性都是a.x a.XX()直接就好,不想c调用属性就是c.x和c->x这样还分对象和指针两种。
:joy:这个是基础啊!回去看文档吧!
底层实现:github.com/golang/go/blob/master/s...
这个是语法糖, 不用纠结
我要举报该,理由是:
你当作go会自动解除引用,方法属性都是a.x a.XX()直接就好,不想c调用属性就是c.x和c->x这样还分对象和指针两种。