From 3d3ebe7235d555fcb9ba34df9d611ac3e68fafbc Mon Sep 17 00:00:00 2001 From: wahaha Date: Tue, 22 May 2018 16:05:42 +0800 Subject: [PATCH 1/3] Update ch5-03.md --- ch5/ch5-03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch5/ch5-03.md b/ch5/ch5-03.md index 18a167f..9b5b32f 100644 --- a/ch5/ch5-03.md +++ b/ch5/ch5-03.md @@ -41,7 +41,7 @@ func findLinks(url string) ([]string, error) { 在findlinks中,有4处return语句,每一处return都返回了一组值。前三处return,将http和html包中的错误信息传递给findlinks的调用者。第一处return直接返回错误信息,其他两处通过fmt.Errorf(§7.8)输出详细的错误信息。如果findlinks成功结束,最后的return语句将一组解析获得的连接返回给用户。 -在finallinks中,我们必须确保resp.Body被关闭,释放网络资源。虽然Go的垃圾回收机制会回收不被使用的内存,但是这不包括操作系统层面的资源,比如打开的文件、网络连接。因此我们必须显式的释放这些资源。 +在findlinks中,我们必须确保resp.Body被关闭,释放网络资源。虽然Go的垃圾回收机制会回收不被使用的内存,但是这不包括操作系统层面的资源,比如打开的文件、网络连接。因此我们必须显式的释放这些资源。 调用多返回值函数时,返回给调用者的是一组值,调用者必须显式的将这些值分配给变量: From 33bf82d477d6a4669962d0fc6ff056886b2b1d0e Mon Sep 17 00:00:00 2001 From: wahaha Date: Sun, 27 May 2018 01:12:05 +0800 Subject: [PATCH 2/3] Update ch7-03.md --- ch7/ch7-03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch7/ch7-03.md b/ch7/ch7-03.md index cf15d45..cf2cad8 100644 --- a/ch7/ch7-03.md +++ b/ch7/ch7-03.md @@ -34,7 +34,7 @@ func (*IntSet) String() string var _ = IntSet{}.String() // compile error: String requires *IntSet receiver ``` -但是我们可以在一个IntSet值上调用这个方法: +但是我们可以在一个IntSet变量上调用这个方法: ```go var s IntSet From e017c23a9a5195df5af1615ca78eba43b2ad5235 Mon Sep 17 00:00:00 2001 From: wahaha Date: Sun, 27 May 2018 01:15:55 +0800 Subject: [PATCH 3/3] Update ch7-03.md --- ch7/ch7-03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch7/ch7-03.md b/ch7/ch7-03.md index cf2cad8..5382826 100644 --- a/ch7/ch7-03.md +++ b/ch7/ch7-03.md @@ -22,7 +22,7 @@ w = rwc // OK: io.ReadWriteCloser has Write method rwc = w // compile error: io.Writer lacks Close method ``` -因为ReadWriter和ReadWriteCloser包含所有Writer的方法,所以任何实现了ReadWriter和ReadWriteCloser的类型必定也实现了Writer接口 +因为ReadWriter和ReadWriteCloser包含有Writer的方法,所以任何实现了ReadWriter和ReadWriteCloser的类型必定也实现了Writer接口 在进一步学习前,必须先解释一个类型持有一个方法的表示当中的细节。回想在6.2章中,对于每一个命名过的具体类型T;它的一些方法的接收者是类型T本身然而另一些则是一个`*T`的指针。还记得在T类型的参数上调用一个`*T`的方法是合法的,只要这个参数是一个变量;编译器隐式的获取了它的地址。但这仅仅是一个语法糖:T类型的值不拥有所有`*T`指针的方法,这样它就可能只实现了更少的接口。