```go
package main
import (
"fmt"
"time"
)
func main() {
var num = 10
var p = &num
c := make(chan int)
go func() {
time.Sleep(time.Second)
c <- *p //-----> 11
//c <- num //----->10
}()
time.Sleep(2 * time.Second)
num++
fmt.Println(<-c)
fmt.Println(p)
return
}
```
为什么 *p 和num的结果不一样
可以使用g1.43版的go编译go1.9 , 我已经验证你的说法了,如果是num的话,在chansend1中,elem的地址确实不是num的地址,可能是编译器做了一份拷贝之后的地址
#16
更多评论