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 關注
- 105 瀏覽
添加回答
舉報