From cfa1f029356e8ea37d06522aa2903cca9eefcd6d Mon Sep 17 00:00:00 2001 From: dake Date: Tue, 27 Oct 2015 22:43:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=94=99=E5=88=AB=E5=AD=97=E7=BA=A0?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eBook/11.8.md | 4 ++-- eBook/11.9.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eBook/11.8.md b/eBook/11.8.md index 92e116d..85e8d33 100644 --- a/eBook/11.8.md +++ b/eBook/11.8.md @@ -1,6 +1,6 @@ # 11.8 第二个例子:读和写 -读和写是软件中很普遍的行为,提起它们会立即想到读写文件、缓存(比如字节或字符串切片)、标准输入输出、标准错误以及网络连接、管道等等,或者读写我们的自定义类型。为了是代码尽可能通用,Go 采取了一致的方式来读写数据。 +读和写是软件中很普遍的行为,提起它们会立即想到读写文件、缓存(比如字节或字符串切片)、标准输入输出、标准错误以及网络连接、管道等等,或者读写我们的自定义类型。为了让代码尽可能通用,Go 采取了一致的方式来读写数据。 `io` 包提供了用于读和写的接口 `io.Reader` 和 `io.Writer`: @@ -16,7 +16,7 @@ type Writer interface { 只要类型实现了读写接口,提供 `Read()` 和 `Write` 方法,就可以从它读取数据,或向它写入数据。一个对象要是可读的,它必须实现 `io.Reader` 接口,这个接口只有一个签名是 `Read(p []byte) (n int, err error)` 的方法,它从调用它的对象上读取数据,并把读到的数据放入参数中的字节切片中,然后返回读取的字节数和一个 `error` 对象,如果没有错误发生返回 'nil',如果已经到达输入的尾端,会返回 `io.EOF("EOF")`,如果读取的过程中发生了错误,就会返回具体的错误信息。类似地,一个对象要是可写的,它必须实现 `io.Writer` 接口,这个接口也只有一个签名是 `Write(p []byte) (n int, err error)` 的方法,它将指定字节切片中的数据写入调用它的对象里,然后返回实际写入的字节数一个 `error` 对象(如果没有错误发生就是 `nil`)。 -`io` 包里的 `Readers` 和 `Writers` 都是不带缓冲的,`bufio` 包里提供了对应的带缓冲的操作,在读写 `UTF-8` 编码的文本文件时它们尤其有用。在 第12章 我们会看在实战使用它们的很多例子。 +`io` 包里的 `Readers` 和 `Writers` 都是不带缓冲的,`bufio` 包里提供了对应的带缓冲的操作,在读写 `UTF-8` 编码的文本文件时它们尤其有用。在 第12章 我们会看到很多在实战使用它们的例子。 在实际编程中尽可能的使用这些接口,会使程序变得更通用,可以在任何实现了这些接口的类型上使用读写方法。 diff --git a/eBook/11.9.md b/eBook/11.9.md index 9ebcf3a..e208d59 100644 --- a/eBook/11.9.md +++ b/eBook/11.9.md @@ -209,7 +209,7 @@ func main() { ## 11.9.5 接口到接口 -一个接口的值可以赋值给另一个接口变量,只要底层类型实现了必要的方法。这个转换是在运行时进行检查的,转换失败会导致一个运行时错误:这是 'Go' 语言动态的一面,可以那它和 `Ruby` 和 `Python` 这些动态语言相比较。 +一个接口的值可以赋值给另一个接口变量,只要底层类型实现了必要的方法。这个转换是在运行时进行检查的,转换失败会导致一个运行时错误:这是 'Go' 语言动态的一面,可以拿它和 `Ruby` 和 `Python` 这些动态语言相比较。 假定: From b02ef463f4bc40ce6def7b38e2d3292b56d73029 Mon Sep 17 00:00:00 2001 From: dake Date: Tue, 27 Oct 2015 22:50:06 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A1=A5=E5=85=A8=E7=AC=AC11=E7=AB=A0?= =?UTF-8?q?=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eBook/directory.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eBook/directory.md b/eBook/directory.md index d362c58..976b40f 100644 --- a/eBook/directory.md +++ b/eBook/directory.md @@ -103,6 +103,8 @@ - 11.7 [第一个例子:使用 Sorter 接口排序](11.7.md) - 11.8 [第二个例子:读和写](11.8.md) - 11.9 [空接口](11.9.md) + - 11.10 [反射包](11.10.md) + - 11.11 [Printf和反射](11.11.md) ## 第三部分:Go 高级编程 From d3c08044c17249c927ac831eefbf40e1eedb14c0 Mon Sep 17 00:00:00 2001 From: dake Date: Wed, 28 Oct 2015 14:07:39 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=8B=B1=E6=96=87=E5=AD=97=E6=AF=8D?= =?UTF-8?q?=E5=92=8C=E4=B8=AD=E6=96=87=E5=AD=97=E7=AC=A6=E9=97=B4=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=A9=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eBook/11.10.md | 2 +- eBook/11.11.md | 2 +- eBook/directory.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eBook/11.10.md b/eBook/11.10.md index e852daa..df8bf16 100644 --- a/eBook/11.10.md +++ b/eBook/11.10.md @@ -277,4 +277,4 @@ t is now {77 Sunset Strip} - [目录](directory.md) - 上一节:[空接口](11.9.md) -- 下一节:[Printf和反射](11.11.md) \ No newline at end of file +- 下一节:[Printf 和反射](11.11.md) \ No newline at end of file diff --git a/eBook/11.11.md b/eBook/11.11.md index c520718..52d3583 100644 --- a/eBook/11.11.md +++ b/eBook/11.11.md @@ -1,4 +1,4 @@ -# 11.11 Printf和反射 +# 11.11 Printf 和反射 在Go语言的标准库中,前几节所述的反射的功能被大量地使用。举个例子,fmt包中的Printf(以及其他格式化输出函数)都会使用反射来分析它的`...`参数。 diff --git a/eBook/directory.md b/eBook/directory.md index 976b40f..ca40b9d 100644 --- a/eBook/directory.md +++ b/eBook/directory.md @@ -104,7 +104,7 @@ - 11.8 [第二个例子:读和写](11.8.md) - 11.9 [空接口](11.9.md) - 11.10 [反射包](11.10.md) - - 11.11 [Printf和反射](11.11.md) + - 11.11 [Printf 和反射](11.11.md) ## 第三部分:Go 高级编程