我有以下代码:
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里面什么都不打印.
有人可以解释为什么会这样吗?
我必须遗漏一些关于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 ×2