【问题标题】:In maps even though I can print the value, why I cannot change it? [closed]在地图中即使我可以打印值,为什么我不能更改它? [关闭]
【发布时间】:2021-01-07 09:18:13
【问题描述】:
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])

值未更改,错误消息-无法分配给数独[1][0]

【问题讨论】:

    标签: go variables memory-management hashmap dynamic-memory-allocation


    【解决方案1】:

    sudoku[1][0] 是一个int,您不能附加到int,只能附加到切片。 [9]int 也是 array,而不是 slice

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

    sudoku[1][0] = 10
    

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

    Old value: 5
    New value: 10
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2021-03-28
      • 2022-11-28
      • 1970-01-01
      • 2016-05-06
      • 2012-11-02
      • 1970-01-01
      相关资源
      最近更新 更多