Ich habe einen map
mit komplexen Schlüssel - beispielsweise 2D-Arrays:Kopiert Go (tief) Schlüssel beim Einfügen in eine Karte?
m := make(map[[2][3]int]int)
Wenn ich einen neuen Schlüssel in die Karte einfügen, geht eine tiefe Kopie des Schlüssels machen?
a := [2][3]int{{1, 2, 3}, {4, 5, 6}}
m[a] = 1
Mit anderen Worten, wenn ich das Array a
, nachdem es als Kartenschlüssel ändert, wird die Karte immer noch den alten Wert von a
enthalten?
Arrays in Go sind Pass-by-Value (im Gegensatz zu Slices, die Pass-by-Referenz sind), so ist dies nicht anders als tun 'a: = 1; m [a] = 1 '; Nachdem die Zuordnungszuweisung ausgeführt wurde, haben der Schlüssel und die Variable keinen Bezug (außer, dass sie immer noch den gleichen Wert haben, wenn Sie nicht einen von ihnen ändern). – joshlf