Try   HackMD
tags: code

Golang 拷貝技術整理

淺拷貝

僅複製記憶體位置資訊,若修改則會連動修改

深拷貝

複製真實值,共會有兩份記憶體位置,若修改則分別修改

性質整理

基本型別

string, int, float64, bool 單純指派視為值複製

組合型別

slice, map ,struct 單純指派視為記憶體位置複製

範例

a := []int{1, 2, 3} b := a fmt.Println(a) fmt.Println(b) b[0] = 777 fmt.Println(a) fmt.Println(b)
a := []int{1, 2, 3} b := make([]int, 3) copy(b, a) fmt.Println(a) fmt.Println(b) b[0] = 777 fmt.Println(a) fmt.Println(b)