change escape of ch7

This commit is contained in:
Xargin
2016-10-18 13:20:38 +08:00
parent 9c768334f2
commit 3da62d2c3f
8 changed files with 14 additions and 14 deletions

View File

@@ -13,7 +13,7 @@ c := w.(*bytes.Buffer) // panic: interface holds *os.File, not *bytes.Buffer
第二种如果相反断言的类型T是一个接口类型然后类型断言检查是否x的动态类型满足T。如果这个检查成功了动态值没有获取到这个结果仍然是一个有相同类型和值部分的接口值但是结果有类型T。换句话说对一个接口类型的类型断言改变了类型的表述方式改变了可以获取的方法集合通常更大但是它保护了接口值内部的动态类型和值的部分。
在下面的第一个类型断言后w和rw都持有os.Stdout因此它们每个有一个动态类型*os.File但是变量w是一个io.Writer类型只对外公开出文件的Write方法然而rw变量也只公开它的Read方法。
在下面的第一个类型断言后w和rw都持有os.Stdout因此它们每个有一个动态类型`*os.File`但是变量w是一个io.Writer类型只对外公开出文件的Write方法然而rw变量也只公开它的Read方法。
```go
var w io.Writer
@@ -38,7 +38,7 @@ f, ok := w.(*os.File) // success: ok, f == os.Stdout
b, ok := w.(*bytes.Buffer) // failure: !ok, b == nil
```
第二个结果常规地赋值给一个命名为ok的变量。如果这个操作失败了那么ok就是false值第一个结果等于被断言类型的零值在这个例子中就是一个nil的*bytes.Buffer类型。
第二个结果常规地赋值给一个命名为ok的变量。如果这个操作失败了那么ok就是false值第一个结果等于被断言类型的零值在这个例子中就是一个nil的`*bytes.Buffer`类型。
这个ok结果经常立即用于决定程序下面做什么。if语句的扩展格式让这个变的很简洁