smoothen some sentences

This commit is contained in:
Wenlei
2012-10-16 14:16:58 +08:00
parent 2919198498
commit b31c99b044

8
2.5.md
View File

@@ -32,7 +32,11 @@
很显然,这样的实现并不优雅,而且从概念上来说一个"形状"的面积应该是"形状"的一个特性,应该是属于这个形状的,就像他的字段一样。
基于上面的原因所以就有了`method`的概念,`method`是附属在一个给定的类型上的,他的语法和函数的声明语法几乎一样,只是在`func`后面增加了一个receiver(也就是method所依从的主体)用上面提到的形状的例子来说method `area()` 是依赖于某个形状(比如说Rectangle)来发生作用的。Rectangle.area()的发出者应该是Rectangle area()是属于Rectangle而非一个外围函数。更具体地说Rectangle存在字段length 和 width,同时存在方法area(), 这些字段和方法都属于Rectangle
基于上面的原因所以就有了`method`的概念,`method`是附属在一个给定的类型上的,他的语法和函数的声明语法几乎一样,只是在`func`后面增加了一个receiver(也就是method所依从的主体)。
用上面提到的形状的例子来说method `area()` 是依赖于某个形状(比如说Rectangle)来发生作用的。Rectangle.area()的发出者是Rectangle area()是属于Rectangle的方法而非一个外围函数。
更具体地说Rectangle存在字段length 和 width, 同时存在方法area(), 这些字段和方法都属于Rectangle。
用Rob Pike的话来说就是
@@ -91,7 +95,7 @@ method的语法如下
![](images/2.5.shapes_func_with_receiver_cp.png?raw=true)
在上例method area() 分别属于Rectangle和Circle 于是他们的 Receiver 就变成了Rectangle 和 Circle, 意思是这个area()方法 是由 Rectangle/Circle 发出的。
在上例method area() 分别属于Rectangle和Circle 于是他们的 Receiver 就变成了Rectangle 和 Circle, 或者说这个area()方法 是由 Rectangle/Circle 发出的。
>值得说明的一点是图示中method用虚线标出意思是此处方法的Receiver是以值传递而非引用传递是的Receiver还可以是指针, 两者的差别在于, 指针作为Receiver会对实例对象的内容发生操作,而普通类型作为Receiver仅仅是以副本作为操作对象,并不对实例对象发生操作。后文对此会有详细论述。