Update 02.3.md

As per my test, it should be "channel, slice and map" which are like the pointer mechanism. And string is immutable object in Golang as well. And I did some tests to verify that point.  see http://kanglecjr.iteye.com/admin/blogs/2176839
This commit is contained in:
kingmax-chan
2015-01-18 10:43:34 +08:00
parent fa5957ddf5
commit 71dbbfe3f0

View File

@@ -321,7 +321,7 @@ Go函数支持变参。接受变参的函数是有着不定数量的参数的。
- 传指针使得多个函数能操作同一个对象。
- 传指针比较轻量级 (8bytes),只是传内存地址,我们可以用指针传递体积大的结构体。如果用参数值传递的话, 在每次copy上面就会花费相对较多的系统开销内存和时间。所以当你要传递大的结构体的时候用指针是一个明智的选择。
- Go语言中`string``slice``map`这三种类型的实现机制类似指针,所以可以直接传递,而不用取地址后传递指针。(注:若函数需改变`slice`的长度,则仍需要取地址传递指针)
- Go语言中`channel``slice``map`这三种类型的实现机制类似指针,所以可以直接传递,而不用取地址后传递指针。(注:若函数需改变`slice`的长度,则仍需要取地址传递指针)
### defer
Go语言中有种不错的设计即延迟defer语句你可以在函数中添加多个defer语句。当函数执行到最后时这些defer语句会按照逆序执行最后该函数返回。特别是当你在进行一些打开资源的操作时遇到错误需要提前返回在返回前你需要关闭相应的资源不然很容易造成资源泄露等问题。如下代码所示我们一般写打开一个资源是这样操作的