直接上代码:
func (r *Rect) Area1() float64{
return (*r).width * (*r).height
}
func (r *Rect) Area2() float64{
return r.width * r.height
}
func (r Rect) Area3() float64{
return r.width * r.height
}
func main(){
var r = new(Rect)
r.width = 2.5
r.height = 2.5
fmt.Println("r's area1 is :",r.Area1())
fmt.Println("r's area2 is :",r.Area2())
fmt.Println("r's area3 is :",r.Area3())
}
以前是搞C/C++的,刚解除golang,遇到这个就很难理解了,尤其是第二个,入参是指针类型,访问内容不需要加星号?? 还有就是如 :rect2 := &Rect{2.5,2.5}
这种,也是返回的指针,但是访问的时候也是直接rect2.width 跪求大神赐教!!
有疑问加站长微信联系(非本文作者)

三个都运行正常且结果正确 但是如果: type Integer int func (a *Integer) Add(b Integer) { a += b } 就报错了,这是为啥??
Go 编译器会自动做这种转换。查看Go语言规范:http://docs.studygolang.com/ref/spec#Struct_types 或 中文版: http://docscn.studygolang.com/ref/spec.old#结构类型
而
a += b
属于指针和 int 相加,Go 不支持指针运算。好!马上去瞧瞧,谢谢你这么好的资源,太感谢你了!!
不客气。共同学习!
我也从c/c++转到go的。