第7章,部分字词修订,语序调整。少量错误修订。

This commit is contained in:
zhliner
2017-08-24 22:29:24 +08:00
parent 9a9b9a0594
commit 17919273e1
14 changed files with 87 additions and 87 deletions

View File

@@ -20,7 +20,7 @@ var w io.Writer
![](../images/ch7-01.png)
一个接口值基于它的动态类型被描述为空或非空所以这是一个空的接口值。你可以通过使用w==nil或者w!=nil来判接口值是否为空。调用一个空接口值上的任意方法都会产生panic:
一个接口值基于它的动态类型被描述为空或非空所以这是一个空的接口值。你可以通过使用w==nil或者w!=nil来判接口值是否为空。调用一个空接口值上的任意方法都会产生panic:
```go
w.Write([]byte("hello")) // panic: nil pointer dereference
@@ -32,7 +32,7 @@ w.Write([]byte("hello")) // panic: nil pointer dereference
w = os.Stdout
```
这个赋值过程调用了一个具体类型到接口类型的隐式转换这和显式的使用io.Writer(os.Stdout)是等价的。这类转换不管是显式的还是隐式的,都会刻画出操作到的类型和值。这个接口值的动态类型被设为`*os.Stdout`指针的类型描述符它的动态值持有os.Stdout的拷贝这是一个代表处理标准输出的os.File类型变量的指针图7.2)。
这个赋值过程调用了一个具体类型到接口类型的隐式转换这和显式的使用io.Writer(os.Stdout)是等价的。这类转换不管是显式的还是隐式的,都会刻画出操作到的类型和值。这个接口值的动态类型被设为`*os.File`指针的类型描述符它的动态值持有os.Stdout的拷贝这是一个代表处理标准输出的os.File类型变量的指针图7.2)。
![](../images/ch7-02.png)
@@ -72,7 +72,7 @@ w.Write([]byte("hello")) // writes "hello" to the bytes.Buffers
w = nil
```
这个重置将它所有的部分都设为nil值把变量w恢复到和它之前定义时相同的状态在图7.1中可以看到。
这个重置将它所有的部分都设为nil值把变量w恢复到和它之前定义时相同的状态在图7.1中可以看到。
一个接口值可以持有任意大的动态值。例如表示时间实例的time.Time类型这个类型有几个对外不公开的字段。我们从它上面创建一个接口值,
@@ -84,7 +84,7 @@ var x interface{} = time.Now()
![](../images/ch7-04.png)
接口值可以使用==和!来进行比较。两个接口值相等仅当它们都是nil值或者它们的动态类型相同并且动态值也根据这个动态类型的操作相等。因为接口值是可比较的所以它们可以用在map的键或者作为switch语句的操作数。
接口值可以使用==和!来进行比较。两个接口值相等仅当它们都是nil值或者它们的动态类型相同并且动态值也根据这个动态类型的==操作相等。因为接口值是可比较的所以它们可以用在map的键或者作为switch语句的操作数。
然而如果两个接口值的动态类型相同但是这个动态类型是不可比较的比如切片将它们进行比较就会失败并且panic: