Go賦值和拷貝

2021-10-01 02:28:43 字數 891 閱讀 3668

測試**

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等 賦值 對於物件型別資料的影響 賦於該值在棧中的位址,而不是堆中的資料,使得...