我有以下代码:package mainimport "net"import "fmt"import "bufio"func main() { conn, _ := net.Dial("tcp", "irc.freenode.net:6667") reader := bufio.NewReader(conn) go func() { str, err := reader.ReadString('\n') if err != nil { // handle it fmt.Println(err) } fmt.Println(str) }()}如果我没有从 goroutine 中的缓冲区读取的代码,它会输出这样的消息,这就是我期望发生的事情::zelazny.freenode.net NOTICE * :*** Looking up your hostname...但是,将它放在 goroutine 中不会打印任何内容。有人可以解释为什么会这样吗?
3 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
当main()
函数完成时,您的程序将退出。这很可能发生在您的 goroutine 有时间运行并打印其输出之前。
一种选择是让主 goroutine 块从通道读取,并在完成工作后让 goroutine 写入通道。
- 3 回答
- 0 关注
- 470 浏览
添加回答
举报
0/150
提交
取消