Golang os.stdin 作为 Goroutines 中的读者

在 Goroutine 中使用 os.stdin 作为 Reader 可以吗?基本上我想要完成的是使用户能够在不阻塞主线程的情况下输入消息。


例子:


go func() {

    for {

        consolereader := bufio.NewReader(os.Stdin)


        input, err := consolereader.ReadString('\n') // this will prompt the user for input


        if err != nil {

             fmt.Println(err)

             os.Exit(1)

        }


        fmt.Println(input)

    }

}()


小唯快跑啊
浏览 167回答 1
1回答

莫回无

是的,这完全没问题。只要这是与 交互的唯一 goroutine os.Stdin,一切都会正常工作。顺便说一句,您可能想要使用bufio.Scanner-使用它比使用更好一些bufio.Reader:go func() {    consolescanner := bufio.NewScanner(os.Stdin)    // by default, bufio.Scanner scans newline-separated lines    for consolescanner.Scan() {        input := consolescanner.Text()        fmt.Println(input)    }    // check once at the end to see if any errors    // were encountered (the Scan() method will    // return false as soon as an error is encountered)     if err := consolescanner.Err(); err != nil {         fmt.Println(err)         os.Exit(1)    }}()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go