Closed
Description
What version of Go are you using (go version
)?
go version go1.9.2 linux/amd64
Does this issue reproduce with the latest release?
yes
What did you do?
Two programs:
program 1:
package main
import "fmt"
func main() {
var m = map[int]int{}
var p *int
defer func() {
fmt.Println(recover())
fmt.Println(len(m)) // 0
}()
m[2], *p = 1, 2
}
program 2:
package main
import "fmt"
func main() {
var m map[int]int
var a int
var p = &a
defer func() {
fmt.Println(recover())
fmt.Println(*p) // 5
}()
*p, m[2] = 5, 2
}
What did you expect to see?
The behaviors of the two programs should be consistent.
What did you see instead?
The behaviors of the two programs are not consistent.
program 1 finishes zero assignments.
but program 2 finishes one assignment.