-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Closed
Labels
Description
The Go spec says "An assignment operation x op= y where op is a binary arithmetic operator is equivalent to x = x op (y) but evaluates x only once."
I think for both of these sample programs the only valid outputs are "2 2" and "12 2":
An output of "11 2" indicates that m[0] was evaluated twice: once indexing into the old slice/map to read the value 1, and then once into the new to store the value 11.
Notably, gccgo outputs "12 2" for slices, but cmd/compile outputs "11 2" for slices, and both output "11 2" for maps.
zigo101 and tmthrgdzigo101