Skip to content

Commit

Permalink
方法和接口修改
Browse files Browse the repository at this point in the history
  • Loading branch information
葛佳兴 committed Nov 22, 2016
1 parent 339c059 commit 3ca3ace
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
8 changes: 5 additions & 3 deletions chapter15方法.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ Go 语言中变量可以在三个地方声明:

**全局变量**

在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。
在函数体外声明的变量称之为全局变量,首字母大写全局变量可以在整个包甚至外部包(被导出后)使用。

```go
package main
Expand Down Expand Up @@ -240,7 +240,7 @@ type Employee struct {
company string
}

//0Human定义method
//Human定义method
func (h *Human) SayHi() {
fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone)
}
Expand All @@ -256,7 +256,6 @@ func main() {
mark.SayHi()
sam.SayHi()
}

```

`结果`
Expand All @@ -266,5 +265,8 @@ Hi, I am Mark you can call me on 222-222-YYYY
Hi, I am Sam, I work at Golang Inc. Call me on 111-888-XXXX
```

#### 总结

- 方法是可以继承和重写的
- 存在继承关系时,按照就近原则,进行调用

15 changes: 11 additions & 4 deletions chapter16接口.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ func (h Human) SayHi() {
} //Human实现Sing方法
func (h Human) Sing(lyrics string) {
fmt.Println("La la la la...", lyrics)
} //Employee重载Human的SayHi方法
} //Employee重写Human的SayHi方法
func (e Employee) SayHi() {
fmt.Printf("Hi, I am %s, I work at %s. Call me on %s\n", e.name,
e.company, e.phone) //Yes you can split into 2 lines here.
Expand Down Expand Up @@ -144,7 +144,6 @@ func main() {
}
}


```

`结果`
Expand All @@ -166,6 +165,10 @@ func main() {
interface的任意类型的对象。例如上面例子中,我们定义了一个Men interface类型的变量m,那么m里面可以存
Human、Student或者Employee值
> 当然,使用指针的方式,也是可以的
>
> 但是,接口对象不能调用实现对象的属性
**interface函数参数**
interface的变量可以持有任意实现该interface类型的对象,这给我们编写函数(包括method)提供了一些额外的思
Expand Down Expand Up @@ -196,7 +199,6 @@ func main() {
s = new(Test)
s.Len()
}
```
`结果`
Expand Down Expand Up @@ -273,4 +275,9 @@ Controller实现了所有的Something接口方法,当结构体T中调用Contro
如果`something = new(test.Controller)`则调用的是Controller中的Get方法。
T可以使用Controller结构体中定义的变量
T可以使用Controller结构体中定义的变量
#### 总结
接口对象不能调用接口实现对象的属性

0 comments on commit 3ca3ace

Please sign in to comment.