自身由应用bufio.NewReader(os.Stdin)
的经验而来。
因为io.Reader的读取是阻塞的,所以异步应用的时候,goroutine有可能会卡在对其进行Read操作的中央,因此要留神透露问题。
因为io.Reader这个接口自身是没有敞开办法的,所以在应用io.Reader的时候大抵有几个特定的思路。
- 对于os.Stdin这类专用输出端,不要反复创立Reader并尝试读取,尽量从繁多Reader读取须要的内容,防止反复创立Reader并导致读取的互相烦扰。
- 对于个别Reader,比方读文件之类的,能够应用原构造的Close办法进行敞开,来防止goroutine的阻塞和透露。
- 逻辑上尽量避免阻塞,疾速实现Read操作,达到Read操作的完结条件,比方io.EOF。