相关疑难解决方法(0)

为什么fmt.Println在goroutine中不打印一行?

我有以下代码:

package main

import "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)
    }()

}
Run Code Online (Sandbox Code Playgroud)

如果我没有从goroutine中的缓冲区读取的代码,它会输出这样的消息,这是我期望发生的:

:zelazny.freenode.net NOTICE * :*** Looking up your hostname...
Run Code Online (Sandbox Code Playgroud)

然而,将它放在goroutine里面什么都不打印.

有人可以解释为什么会这样吗?

go

68
推荐指数
3
解决办法
2万
查看次数

标签 统计

go ×1