// 正常赋值
a := []int{1, 2, 3, 4, 5}
b := a
b[0] = 10
fmt.Println(a) // [10 2 3 4 5]
fmt.Println(b) // [10 2 3 4 5]
// 多维切片赋值
a := [][]int{
{1,2,3,4,5},
{6,7,8,9,10},
}
b := a
b[0][0] = 11
fmt.Println(a) // [[11 2 3 4 5] [6 7 8 9 10]]
fmt.Println(b) // [[11 2 3 4 5] [6 7 8 9 10]]
// 多维切片 copy
a := [][]int{
{1,2,3,4,5},
{6,7,8,9,10},
}
b := make([][]int, len(a))
copy(b, a)
b[0][0] = 11
fmt.Println(a) // [[11 2 3 4 5] [6 7 8 9 10]]
fmt.Println(b) // [[11 2 3 4 5] [6 7 8 9 10]]
// 单切片 json序列化 神拷贝
a := []int{1, 2, 3, 4, 5}
var b []int
result, _ := json.Marshal(a)
_ = json.Unmarshal(result, &b)
b[0] = 10
fmt.Println(a) // [1 2 3 4 5]
fmt.Println(b) // [10 2 3 4 5]
// 多维切片 json 深拷贝
a := [][]int{
{1,2,3,4,5},
{6,7,8,9,10},
}
b := make([][]int, len(a))
result, _ := json.Marshal(a)
_ = json.Unmarshal(result, &b)
b[0][0] = 11
fmt.Println(a) // [[1 2 3 4 5] [6 7 8 9 10]]
fmt.Println(b) // [[11 2 3 4 5] [6 7 8 9 10]]
// 多维 切片 自主深拷贝
a := []int{1, 2, 3, 4, 5}
b := make([]int, len(a))
for key, value := range a{
b[key] = value
}
b[0] = 10
fmt.Println(a) // [1 2 3 4 5]
fmt.Println(b) // [10 2 3 4 5]