I think I didn't communicate my point clearly. Consider this hypothetical program:
x := make(map[int]int)
x[0] = 5
y := &x[0]
*y = 10
print(x[0]) // 5 or 10?
x[0] = 6
print(*y) // 6 or 10?
// force the map to grow and reallocate the buckets
for j := 1; j < 100; j++ {
x[j] = j
}
*y = 11
print(x[0]) // 5, 6, 10, or 11?
The crux of the problem is answering what y actually points at: the value in the map bucket, or some freshly allocated value? There are problems with whichever one you pick.
edit: changed the second print to *y instead of x[0]. thanks
masklinn for catching this error.
edit: changed the second print to *y instead of x[0]. thanks masklinn for catching this error.