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/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` 这些动态语言相比较。 假定: diff --git a/eBook/directory.md b/eBook/directory.md index d362c58..ca40b9d 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 高级编程