ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz
本身由使用bufio.NewReader(os.Stdin)
的经历而来。
由于io.Reader的读取是阻塞的,所以异步使用的时候,goroutine有可能会卡在对其进行Read操作的地方,因而要注意泄漏问题。
因为io.Reader这个接口本身是没有关闭方法的,所以在使用io.Reader的时候大致有几个特定的思路。
- 对于os.Stdin这类公用输入端,不要重复创建Reader并尝试读取,尽量从单一Reader读取需要的内容,避免重复创建Reader并导致读取的相互干扰。
- 对于一般Reader,比如读文件之类的,可以使用原结构的Close方法进行关闭,来避免goroutine的阻塞和泄漏。
- 逻辑上尽量避免阻塞,快速完成Read操作,达到Read操作的结束条件,比如io.EOF。