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