fixed markdown format

This commit is contained in:
yetist
2012-10-28 21:00:50 +08:00
parent c3abc9b6c7
commit 81a61b9ced
59 changed files with 280 additions and 280 deletions

10
2.5.md
View File

@@ -1,7 +1,7 @@
#2.5面向对象
# 2.5面向对象
前面两章我们介绍了函数和struct那你是否想过函数当作struct的字段一样来处理呢今天我们就讲解一下函数的另一种形态带有接收者的函数我们称为`method`
##method
## method
现在假设有这么一个场景你定义了一个struct叫做长方形你现在想要计算他的面积那么按照我们一般的思路应该会用下面的方式来实现
package main
@@ -213,7 +213,7 @@ method的语法如下
上面的代码通过文字描述出来之后一看是不是很简单?我们一般解决问题都是通过问题的描述,然后去用这样的代码实现。
###指针作为receivers
### 指针作为receivers
现在让我们回头看看上面的SetColor的method它的receiver是一个指向Box的指针是的你可以使用*Box。想想为啥要使用指针而不是Box本身呢
我们先来看看我们上面SetColor的真正目的我们是想改变这个Box的颜色那么如果我们不传Box的指针那么我们接受的其实是Box的一个copy如果改变了颜色值其实是修改的copy而不是真正的Box。所以我们需要传入指针。
@@ -236,7 +236,7 @@ method的语法如下
所以你不用担心你是调用的指针的method还是不是指针的methodGo知道你要做的一切这对于有多年C/C++编程经验的同学来说,真是解决了一个很大的痛苦。
###method继承
### method继承
前面一章我们学习了字段的继承那么你也会发现Go的一个神奇之处method也是可以继承的。如果匿名字段实现了一个method那么包含这个匿名字段的struct也能调用该method。让我们来看下面这个例子
package main
@@ -271,7 +271,7 @@ method的语法如下
sam.SayHi()
}
###method重载
### method重载
上面的例子中如果Emplyee想要实现自己的SayHi,怎么办简单和匿名字段冲突一样的道理我们可以在Emplyee上面定义一个method重载了匿名字段的方法。请看下面的例子
package main