This commit is contained in:
leisore
2015-08-12 11:55:31 +08:00
parent b474d92cd8
commit 872b5f4fe4

View File

@@ -285,7 +285,7 @@ func main() {
}
```
** 10.6.4 方法和未导出字段
## 10.6.4 方法和未导出字段
考虑person2.go中的person包类型Person被明确的导出了但是它的字段没有被导出。例如在use_person2.go中p.firsetname就是错误的。该如何在另一个程序中修改或者只是读取一个Person的名字呢
@@ -408,7 +408,7 @@ func (n *NamedPoint) Abs() float64 {
结构体内嵌和自己在同一个包中的结构体时,可以彼此访问对方所有的字段和方法。
**练习 10.8**inheritance_car.go
练习 10.8inheritance_car.go
创建一个上面Car和Engine可运行的例子并且给Car类型一个wheelCount字段和一个numberOfWheels()方法。
@@ -571,17 +571,17 @@ func main() {
It exhibits behavior of a Camera: Click
It works like a Phone too: Ring Ring
* 练习 10.9* point_methods.go:
练习 10.9point_methods.go:
从point.go开始10.1的联系使用方法来实现Abs()和Scale()函数Point作为方法的接收者类型。也为Point3和Polar实现Abs()方法。做point.go中同样的事情只是这次通过方法。
* 练习 10.10* inherit_methods.go:
练习 10.10inherit_methods.go:
定义一个结构体类型Base它包含一个字段id方法Id()返回id方法SetId()修改id。结构体类型Person包含Base及FirstName和LastName字段。结构体类型Employee包含一个Person和salary字段。
创建一个employee实例然后显示它的id。
* 练习 10.11* magic.go:
练习 10.11magic.go:
首先预测一下下面程序的结果,然后动手实验下:
@@ -657,10 +657,11 @@ func (i *Integer) String() string {
如果真的需要更多OO的能力看一下goop包Go Object-Oriented Programming它来自与Scott Pakin[(https://github.com/losalamos/goop]: 它给Go提供了JavaScript风格的对象基于原型的对象并且支持多重继承和类型独立分派通过它可以实现你喜欢的其他编程语言里的一些结构。
** 问题 10.1**
问题 10.1
我们在某个类型的变量上使用点号调用一个方法variable.method()在使用Go以前在哪儿碰到过OO的点号
** 问题 10.2**
问题 10.2
a) 假设定义: `type Integer int`完成get()方法的方法体: `func (p Integer) get() int { ... }`