|
@@ -190,7 +190,16 @@ Go指针值是支持(使用比较运算符==和!=)比较的。 但是,两
|
|
|
|
|
|

|
|
|
|
|
|
+## 关于术语“引用类型”和“引用值”
|
|
|
|
|
|
+“引用”这个术语在Go社区中使用得有些混乱。很多Go程序员在Go编程中可能由此 产生了一些困惑。 一些文档或者网络文章,包括一些官方文档 (https://golang.google.cn/doc/faq#references),把“引用”(reference) 看作是“值”(value)的一个对立面。 《Go语言101》强烈不推荐这种定义。在这 一点上,本人不想争论什么。这里仅仅列出一些肯定错误地使用了“引用”这个术 语的例子:
|
|
|
+
|
|
|
+- 在Go中,只有切片、映射、通道和函数类型属于引用类型。 (如果我们确实 需要引用类型这个术语,那么我们不应把其它指针持有者类型排除在引用类型 之外。)
|
|
|
+- 一些函数调用的参数是通过引用来传递的。 (对不起,在Go中,所有的函数 调用的参数都是通过值复制直接值部的方式来传递的。)
|
|
|
+
|
|
|
+我并不是想说引用类型这个术语在Go中是完全没有价值的, 我只是想表达这个术语 是完全没有必要的,并且它常常在Go的使用中导致一些困惑。我推荐使用**指针持有者类型**来代替这个术语。 另外,我个人的观点是最好将引用这个词限定到只表示值 之间的关系,把它当作一个动词或者名词来使用,永远不要把它当作一个形容词来 使用。 这样将在使用Go的过程中避免很多困惑。
|
|
|
+
|
|
|
+# 数组、切片和映射
|
|
|
|
|
|
|
|
|
|