golang中 指標or結構體 的值拷貝 深拷貝

2021-09-25 03:44:50 字數 799 閱讀 8074

我們先宣告乙個狗狗的結構體

type dog struct

// 重寫string介面

func

(dog *dog)

string()

string

第一種 結構體的普通宣告及值拷貝,可以看到輸出的時候並沒有用到string(畢竟不是指標)

func

main()

d2 := d1 //值拷貝

d1.name =

"小喵"

fmt.

println

(d1)

// fmt.

println

(d2)

// }

第二種 結構體的普通宣告及指標淺拷貝,可以看到輸出的時候d1和d3的值是一樣的,但是d1沒有用到string,d3有

func

main()

d3 :=

&d1 //值拷貝

d1.name =

"小喵"

fmt.

println

(d1)

// fmt.

println

(d3)

// this dog's name: 小喵, it's age: 2

}

第三種 結構體的new()宣告及指標的值拷貝,可以看到輸出的時候d1和d3的值是不一樣的

func

main()

結構體中指向指標的指標

include include voidf int a voidf1 int a intmain include include typedef struct nodenode,linknode void f node node1 intmain 判斷能否修改乙個指標的值,關鍵在於判斷這個指標是否已...

Golang結構體和指標

golang是一門很特殊的語言,雖然它出生比較晚,但是在很多地方卻和現在的程式語言有所不同。現在的程式語言要麼是函式式的 要麼是物件導向的,而go語言卻有指標 結構體這些概念,並解決了c語言的一些坑。從這個角度上說,golang可以看做c語言的填坑加強版。定義結構體和c語言一樣,使用struct關鍵...

golang 結構體與指標

1.結構體 結構體是一系列具有指定資料型別的資料型別 就是乙個結構體中儲存多個不同型別的資料字段 用於建立傳遞複雜資料結構 結構體可以理解為物件導向的模板 但是go並非物件導向 結構體只是一種新的資料型別 2.結構體建立 結構體例項的資料字段不賦值 預設就是該型別的零值 巢狀結構體可以完成更為複雜的...