From f73e6305fe90c2333c47bda29afc554f5b4cbdc4 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sat, 12 Sep 2015 14:39:14 -0400 Subject: [PATCH] 11.5-11.7 --- README.md | 2 +- README_gc.md | 2 +- TOC.md | 5 ++++- eBook/11.6.md | 7 +++---- eBook/11.7.md | 7 +++---- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 2705b7e..b31064e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ## 翻译进度 -11.4 [类型判断:type-switch](eBook/11.4.md) +11.7 [第一个例子:使用Sorter接口排序](eBook/11.7.md) ## 支持本书 diff --git a/README_gc.md b/README_gc.md index f7930c2..5e69a63 100644 --- a/README_gc.md +++ b/README_gc.md @@ -28,4 +28,4 @@ Golang 编程:245386165 |更新日期 |更新内容 |----------|------------------ -|2015-09-11|11.4 类型判断:type-switch \ No newline at end of file +|2015-09-12|11.7 第一个例子:使用Sorter接口排序 \ No newline at end of file diff --git a/TOC.md b/TOC.md index bb2b7db..9775ae4 100644 --- a/TOC.md +++ b/TOC.md @@ -92,4 +92,7 @@ - 11.1 [接口是什么](eBook/11.1.md) - 11.2 [接口嵌套接口](eBook/11.2.md) - 11.3 [类型断言:如何检测和转换接口变量的类型](eBook/11.3.md) - - 11.4 [类型判断:type-switch](eBook/11.4.md) \ No newline at end of file + - 11.4 [类型判断:type-switch](eBook/11.4.md) + - 11.5 [测试一个值是否实现了某个接口](eBook/11.5.md) + - 11.6 [使用方法集与接口](eBook/11.6.md) + - 11.7 [第一个例子:使用Sorter接口排序](eBook/11.7.md) \ No newline at end of file diff --git a/eBook/11.6.md b/eBook/11.6.md index 029e7ed..a49a920 100644 --- a/eBook/11.6.md +++ b/eBook/11.6.md @@ -1,6 +1,6 @@ # 11.6 使用方法集与接口 -在 10.6.3 及例子 methodset1.go 中我们看到,作用于变量上的方法实际上是不区分变量到底是指针还是值的。当碰到接口类型值时,这会变得有点复杂,原因是接口变量中存储的具体值是不可寻址的,幸运的是,如果使用不当编译器会给出错误。考虑下面的程序: +在第 10.6.3 节及例子 methodset1.go 中我们看到,作用于变量上的方法实际上是不区分变量到底是指针还是值的。当碰到接口类型值时,这会变得有点复杂,原因是接口变量中存储的具体值是不可寻址的,幸运的是,如果使用不当编译器会给出错误。考虑下面的程序: 示例 11.5 methodset2.go: @@ -77,10 +77,9 @@ func main() { 将一个值赋值给一个接口赋值时,编译器会确保所有可能的接口方法都可以在此值上被调用,因此不正确的赋值在编译期就会失败。 - **译注** -Go语言规范定义了接口方法集的调用规则: +Go 语言规范定义了接口方法集的调用规则: - 类型 *T 的可调用方法集包含接受者为 *T 或 T 的所有方法集 - 类型 T 的可调用方法集包含接受者为 T 的所有方法 @@ -90,4 +89,4 @@ Go语言规范定义了接口方法集的调用规则: - [目录](directory.md) - 上一节:[测试一个值是否实现了某个接口](11.5.md) -- 下一节:[第一个例子:使用Sorter接口排序](11.7.md) \ No newline at end of file +- 下一节:[第一个例子:使用 Sorter 接口排序](11.7.md) \ No newline at end of file diff --git a/eBook/11.7.md b/eBook/11.7.md index 9f7403e..cdf42a9 100644 --- a/eBook/11.7.md +++ b/eBook/11.7.md @@ -1,8 +1,7 @@ -# 11.7 第一个例子:使用Sorter接口排序 +# 11.7 第一个例子:使用 Sorter 接口排序 一个很好的例子是来自标准库的 `sort` 包,要对一组数字或字符串排序,只需要实现三个方法:反映元素个数的 `Len()`方法、比较第 `i` 和 `j` 个元素的 `Less(i, j)` 方法以及交换第 `i` 和 `j` 个元素的 `Swap(i, j)` 方法。 - 排序函数的算法只会使用到这三个方法(可以使用任何排序算法来实现,此处我们使用冒泡排序): ```go @@ -17,7 +16,7 @@ func Sort(data Sorter) { } ``` -`Sort` 函数接收一个接口类型参数: `Sorter` ,它声明了这些方法: +`Sort` 函数接收一个接口类型参数:`Sorter` ,它声明了这些方法: ```go type Sorter interface { @@ -27,7 +26,7 @@ type Sorter interface { } ``` -参数中的 `int` 不是说要排序的对象一定要是一组 `int`,`i` 和 `j` 表示元素的整型索引,长度也是整型的。 +参数中的 `int` 不是说要排序的对象一定要是一组 `int`、`i` 和 `j` 表示元素的整型索引,长度也是整型的。 现在如果我们想对一个 `int` 数组进行排序,所有必须做的事情就是:为数组定一个类型并在它上面实现 `Sorter` 接口的方法: