在地图中,即使我可以打印该值,为什么我不能更改它?
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]int
是 array, not a slice.
您很可能想更改一个元素,而不是附加到它,所以使用简单的 assignment:
sudoku[1][0] = 10
这将输出(在 Go Playground 上尝试):
Old value: 5
New value: 10
如果您对基础知识不了解,强烈建议您参加 Go Tour。
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]int
是 array, not a slice.
您很可能想更改一个元素,而不是附加到它,所以使用简单的 assignment:
sudoku[1][0] = 10
这将输出(在 Go Playground 上尝试):
Old value: 5
New value: 10
如果您对基础知识不了解,强烈建议您参加 Go Tour。