运行环境
go version:1.19.2
OS:MacOS 12.3,M1 芯片
踩坑过程
今天写一道leetcode题时想把原二维slice拷贝一份,代码如下
func solution(matrix [][]int) {
newMatrix := make([][]int, len(matrix))
for i := 0; i < len(matrix); i++ {
newMatrix[i] = make([]int, len(matrix[0])
}
copy(newMatrix, matrix)
}
然后修改新二维slice值的时候,发现原slice也被修改了。。。
// matrix为 [[0,1,2]]
func solution(matrix [][]int) {
newMatrix := make([][]int, len(matrix))
for i := 0; i < len(matrix); i++ {
newMatrix[i] = make([]int, len(matrix[0])
}
copy(newMatrix, matrix)
newMatrix[0][0] = 1
fmt.Println("newMatrix[0][1] =", newMatrix[0][0])
fmt.Println