在地图中,即使我可以打印该值,为什么我不能更改它?

In maps even though I can print the value, why I cannot change it?

var sudoku = map[int][9]int{   // map of 9 x 9 
    0: {3, 0, 6, 5, 0, 8, 4, 0, 0},
    1: {5, 2, 0, 0, 0, 0, 0, 0, 0},
    2: {0, 8, 7, 0, 0, 0, 0, 3, 1},
    3: {0, 0, 3, 0, 1, 0, 0, 8, 0},
    4: {9, 0, 0, 8, 6, 3, 0, 0, 5},
    5: {0, 5, 0, 0, 9, 0, 6, 0, 0},
    6: {1, 3, 0, 0, 0, 0, 2, 5, 0},
    7: {0, 0, 0, 0, 0, 0, 0, 7, 4},
    8: {0, 0, 5, 2, 0, 6, 3, 0, 0},
}
fmt.Println("Old value:", sudoku[1][0])
sudoku[1][0] = append(sudoku[1][0],10) 
fmt.Println("New value:", sudoku[1][0])

Value is not changed, error message- cannot assign to sudoku[1][0]

sudoku[1][0] 是一个 int,您不能附加到 int,只能附加到切片。另外 [9]intarray, not a slice.

您很可能想更改一个元素,而不是附加到它,所以使用简单的 assignment:

sudoku[1][0] = 10

这将输出(在 Go Playground 上尝试):

Old value: 5
New value: 10

如果您对基础知识不了解,强烈建议您参加 Go Tour