From 07073a0b25c88fcc710903d7bfd3b61d869a28ec Mon Sep 17 00:00:00 2001 From: Xargin Date: Wed, 15 Mar 2017 15:45:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E7=85=A7=E5=8E=9F=E6=96=87=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E7=BC=BA=E5=A4=B1=E7=9A=84=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch6/ch6-02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch6/ch6-02.md b/ch6/ch6-02.md index 2317b9a..326840e 100644 --- a/ch6/ch6-02.md +++ b/ch6/ch6-02.md @@ -84,7 +84,7 @@ p.ScaleBy(2) // implicit (&p) pptr.Distance(q) // implicit (*pptr) ``` -如果类型T的所有方法都是用T类型自己来做接收器(而不是`*T`),那么拷贝这种类型的实例就是安全的;调用他的任何一个方法也就会产生一个值的拷贝。比如time.Duration的这个类型,在调用其方法时就会被全部拷贝一份,包括在作为参数传入函数的时候。但是如果一个方法使用指针作为接收器,你需要避免对其进行拷贝,因为这样可能会破坏掉该类型内部的不变性。比如你对bytes.Buffer对象进行了拷贝,那么可能会引起原始对象和拷贝对象只是别名而已,但实际上其指向的对象是一致的。紧接着对拷贝后的变量进行修改可能会有让你意外的结果。 +如果命名类型T(译注:用type xxx定义的类型)的所有方法都是用T类型自己来做接收器(而不是`*T`),那么拷贝这种类型的实例就是安全的;调用他的任何一个方法也就会产生一个值的拷贝。比如time.Duration的这个类型,在调用其方法时就会被全部拷贝一份,包括在作为参数传入函数的时候。但是如果一个方法使用指针作为接收器,你需要避免对其进行拷贝,因为这样可能会破坏掉该类型内部的不变性。比如你对bytes.Buffer对象进行了拷贝,那么可能会引起原始对象和拷贝对象只是别名而已,但实际上其指向的对象是一致的。紧接着对拷贝后的变量进行修改可能会有让你意外的结果。 **译注:** 作者这里说的比较绕,其实有两点: