mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 03:55:28 +08:00
format
This commit is contained in:
@@ -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.8:inheritance_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.9:point_methods.go:
|
||||
|
||||
从point.go开始(10.1的联系):使用方法来实现Abs()和Scale()函数,Point作为方法的接收者类型。也为Point3和Polar实现Abs()方法。做point.go中同样的事情,只是这次通过方法。
|
||||
|
||||
* 练习 10.10:* inherit_methods.go:
|
||||
练习 10.10:inherit_methods.go:
|
||||
|
||||
定义一个结构体类型Base,它包含一个字段id,方法Id()返回id,方法SetId()修改id。结构体类型Person包含Base,及FirstName和LastName字段。结构体类型Employee包含一个Person和salary字段。
|
||||
|
||||
创建一个employee实例,然后显示它的id。
|
||||
|
||||
* 练习 10.11:* magic.go:
|
||||
练习 10.11:magic.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 { ... }`
|
||||
|
||||
|
Reference in New Issue
Block a user