測試**
package main
import
"fmt"
func
main()
func
test1()
b := a //等號賦值
fmt.
printf
("b切片的值%v,a位址%p,b位址%p\n"
, b, a, b)
a[0]=
100 fmt.
printf
("等號賦值當改變源值,新值也會改變 %v\n"
, b)
}func
test2()
b :=
make([
]int
,len
(a))
copy
(b, a)
fmt.
printf
("b切片的值%v,a位址%p,b位址%p\n"
, b, a, b)
a[0]=
100 fmt.
printf
("copy賦值當改變源值,新值不會改變 %v\n"
, b)
}
結果
b切片的值[12
345],a位址0xc00008a030
,b位址0xc00008a030
等號賦值當改變源值,新值也會改變 [
100234
5]b切片的值[12
345],a位址0xc00008a060
,b位址0xc00008a090
copy賦值當改變源值,新值不會改變 [12
345]
賦值和拷貝
a 1,b a,則 a 和 b指向同一id位址即1的位置 我們把1比作一塊林地,a發現了這塊地,然後告訴了鄰居b,a和b都有相同的許可權在這塊地上伐木 a 1,2,3 4,5,6 b copy.copy a 淺拷貝只能轉殖a中第一層 1,2,3 深層中b還是和a指向同乙個 4,5,6 眾泰 b 發現...
拷貝構造和拷貝賦值
注意指標型別成員變數的深拷貝問題 拷貝構造屬於定義,並賦值 拷貝賦值屬於已經定義,只是賦值。拷貝構造的深拷貝,因為如果提供了拷貝建構函式,則構造該物件時使用的是拷貝建構函式。在拷貝建構函式中只需要 分配新資源,拷貝新內容,返回自引用即可。但是在拷貝賦值函式中,如果存在指標成員變數一般在物件定義時已經...
賦值 淺拷貝和深拷貝
三種方法的形式存在一定的類似,但是也存在各個之間不相同的地方。淺拷貝和深拷貝是用在物件 object 或者陣列 array 這樣的資料型別拷貝賦值時候的說法,而賦值操作也可以用在基礎的資料型別,如number string等 賦值 對於物件型別資料的影響 賦於該值在棧中的位址,而不是堆中的資料,使得...