diff --git a/eBook/11.1.md b/eBook/11.1.md index 8787273..35805a8 100644 --- a/eBook/11.1.md +++ b/eBook/11.1.md @@ -248,7 +248,9 @@ a) b) 使用一个抽象类型 `Shape`(没有字段) 实现同样的功能,它实现接口 `Shaper`,然后在其他类型里内嵌此类型。扩展 10.6.5 中的例子来说明覆写。 +## 链接 + - [目录](directory.md) -- 上一章:[接口(Interfaces)与反射(reflection)](11.0.md) +- 上一节:[接口(Interfaces)与反射(reflection)](11.0.md) - 下一节:[接口嵌套接口](11.2.md) diff --git a/eBook/11.2.md b/eBook/11.2.md index fe72a09..d7c1a53 100644 --- a/eBook/11.2.md +++ b/eBook/11.2.md @@ -22,6 +22,8 @@ type File interface { } ``` +## 链接 + - [目录](directory.md) - 上一节:[接口是什么](11.1.md) - 下一节:[如何检测和转换接口变量的类型:类型断言](11.3.md) \ No newline at end of file diff --git a/eBook/11.3.md b/eBook/11.3.md index 1f8a939..b162d65 100644 --- a/eBook/11.3.md +++ b/eBook/11.3.md @@ -91,6 +91,8 @@ func (ci *Circle) Area() float32 { 如果忽略 `areaIntf.(*Square)` 中的 `*` 号,会导致编译错误:`impossible type assertion: Square does not implement Shaper (Area method has pointer receiver)`。 +## 链接 + - [目录](directory.md) - 上一节:[接口嵌套接口](11.2.md) - 下一节:[类型判断:type-switch](11.4.md) \ No newline at end of file diff --git a/eBook/11.4.md b/eBook/11.4.md index c93c3f8..2ef390f 100644 --- a/eBook/11.4.md +++ b/eBook/11.4.md @@ -71,6 +71,8 @@ func classifier(items ...interface{}) { 接着 练习 11.1 中的内容,创建第二个类型 `RSimple`,它也实现了接口 `Simpler`,写一个函数 `fi`,它可以区分 `Simple` 和 `RSimple` 类型的变量。 +## 链接 + - [目录](directory.md) - 上一节:[类型断言:如何检测和转换接口变量的类型](11.3.md) - 下一节:[测试一个值是否实现了某个接口](11.5.md) \ No newline at end of file diff --git a/eBook/11.5.md b/eBook/11.5.md index 7591264..d0a5db0 100644 --- a/eBook/11.5.md +++ b/eBook/11.5.md @@ -24,6 +24,8 @@ if sv, ok := v.(Stringer); ok { 在接下来的章节中,我们会讨论两个重要的例子,试着去深入理解它们,这样你就可以更好的应用上面的原则。 +## 链接 + - [目录](directory.md) - 上一节:[类型判断:type-switch](11.4.md) - 下一节:[使用方法集与接口](11.6.md) \ No newline at end of file diff --git a/eBook/11.6.md b/eBook/11.6.md index 567a017..76bf407 100644 --- a/eBook/11.6.md +++ b/eBook/11.6.md @@ -86,6 +86,8 @@ Go - 类型 T 的可调用方法集包含接受者为 T 的所有方法 - 类型 T 的可调用方法集不包含接受者为 *T 的方法 +## 链接 + - [目录](directory.md) - 上一节:[测试一个值是否实现了某个接口](11.5.md) - 下一节:[第一个例子:使用Sorter接口排序](11.7.md) \ No newline at end of file diff --git a/eBook/11.7.md b/eBook/11.7.md index 8abcf33..90aca17 100644 --- a/eBook/11.7.md +++ b/eBook/11.7.md @@ -221,6 +221,7 @@ b). 定义一个结构体 `Person`,它有两个字段:`firstName` 和 `lastName`,为 `[]Person` 定义类型 `Persons` 。让 `Persons` 实现 `Sorter` 接口并进行测试。 +## 链接 - [目录](directory.md) - 上一节:[使用方法集与接口](11.6.md) diff --git a/eBook/11.8.md b/eBook/11.8.md index 756c76e..9bfd50f 100644 --- a/eBook/11.8.md +++ b/eBook/11.8.md @@ -22,6 +22,8 @@ type Writer interface { 例如一个 `JPEG` 图形解码器,通过一个 `Reader` 参数,它可以解码来自磁盘、网络连接或以 `gzip` 压缩的 `HTTP` 流中的 `JPEG`图形数据,或者其他任何实现了`Reader` 接口的对象。 +## 链接 + - [目录](directory.md) - 上一节:[第一个例子:使用Sorter接口排序](11.7.md) - 下一节:[空接口](11.9.md) \ No newline at end of file diff --git a/eBook/11.9.md b/eBook/11.9.md index 8040363..ebf2fd4 100644 --- a/eBook/11.9.md +++ b/eBook/11.9.md @@ -248,6 +248,8 @@ func f3(x myInterface) { `x` 转换为 `myPrintInterface` 类型是完全动态的:只要 `x` 的底层类型(动态类型)定义了 `print` 方法这个调用就可以正常运行。 +## 链接 + - [目录](directory.md) - 上一节:[第二个例子:读和写](11.8.md) - 下一节:[反射包](11.10.md) \ No newline at end of file