1 回答
TA贡献1853条经验 获得超6个赞
Go 切片是对基础数组的引用。切片类似于指向值的指针,而不像直接值。如果使用数组而不是切片,您将看到不同的行为:
package main
import "fmt"
func main() {
matrix := [5][5]int{
{100, 20, 30, 10, 11},
{15, 100, 16, 4, 2},
{3, 5, 100, 2, 4},
{19, 6, 18, 100, 3},
{16, 4, 7, 16, 100},
}
var matrix2 [5][5]int
matrix2 = matrix
matrix2[0][1] = 11111111
fmt.Println(matrix)
fmt.Println(matrix2)
}
输出:
[[100 20 30 10 11] [15 100 16 4 2] [3 5 100 2 4] [19 6 18 100 3] [16 4 7 16 100]]
[[100 11111111 30 10 11] [15 100 16 4 2] [3 5 100 2 4] [19 6 18 100 3] [16 4 7 16 100]]
你可以看到,因为我使用了数组数组而不是切片,所以赋值复制了整个矩阵。[5][5]int[5]int[][]int[]intmatrix2 = matrix
如果要使用可变大小的矩阵,则必须编写自己的函数来创建矩阵副本。仅当您在编译时知道矩阵的大小(例如 5x5)时,上述代码才有效。
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报