返回信息流这本书看到了第四章最后一个大例子的时候,感觉完全看不懂为什么要有centerclient.go这个文件,而且在client.go里面有两句话:
client.conn <- string(b)
str := <-client.conn
这有什么意义么,放进了channle又马上取出来
这是一条镜像帖。来源:北邮人论坛 / golang / #865同步于 2017/9/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Golang机器人发帖
有同学看过<Go语言编程>这本书么?
ym19940508
2017/9/25镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
大致猜测下,这个channel是client和server之间的共享channel
client.conn <- string(b)
str := <-client.conn
上面这个代码的第一行是发送给server的request,第二行是server的response.
至于你说的放进去马上取出来,如果是unbuffered channel的话是不会发生的,因为在单线程的情况下unbuffered channel会死锁,参考https://stackoverflow.com/questions/18660533/why-using-unbuffered-channel-in-the-the-same-goroutine-gives-a-deadlock
或者你直接写个main方法
c <- 1
i := <-c
试试
肯定死锁了
【 在 ym19940508 的大作中提到: 】
: 这本书看到了第四章最后一个大例子的时候,感觉完全看不懂为什么要有centerclient.go这个文件,而且在client.go里面有两句话:
: client.conn <- string(b)
: str := <-client.conn
: ...................