```
type target struct {
}
func test(ch chan *target){
a := target{}
fmt.Printf("test:%p\n", &a)
ch <- &a
}
func main() {
ch := make(chan *target)
go func() {
for {
a := <- ch
fmt.Printf("main:%p\n", &a)
}
}()
test(ch)
time.Sleep(time.Second*1)
}
```
ch 的定义是:`chan *target`,所以,从 ch 中得到的结果,已经是地址了,你再取地址,当然不一样了。
main 函数中的改为以下就一样了:
```go
fmt.Printf("main:%p\n", a)
```
#1