相关疑难解决方法(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万
查看次数

为什么这不用代码打印任何goroutine

我必须遗漏一些关于goroutines的基本内容,但是我环顾四周,看不出有什么理由不起作用......

package main

import "fmt"

func main() {
    for i := 0; i < 20; i++ {
        //fmt.Println(i)
        go func(j int) {
            fmt.Println(j + 100)
        }(i)
    }
}
Run Code Online (Sandbox Code Playgroud)

go

0
推荐指数
1
解决办法
225
查看次数

标签 统计

go ×2