以惯用方式缓冲 os.Stdout

huangapple go评论120阅读模式
英文:

Idiomatically buffer os.Stdout

问题

os.Stdout.Write()是一个无缓冲写入操作。要进行缓冲写入操作,可以使用以下代码:

f := bufio.NewWriter(os.Stdout)
f.Write(b)

问题:

有没有更符合惯用法的方法来实现缓冲输出?

英文:

os.Stdout.Write() is an unbuffered write. To get a buffered write, one can use the following:

f := bufio.NewWriter(os.Stdout)
f.Write(b)

Question:

Is there a more idiomatic way to get buffered output?

答案1

得分: 61

不,这是将写入Stdout的数据进行缓冲的最常见的方式。在许多情况下,您还会想要添加一个defer:

f := bufio.NewWriter(os.Stdout)
defer f.Flush()
f.Write(b)

这将确保在从函数返回时刷新缓冲区。

英文:

No, that is the most idiomatic way to buffer writes to Stdout. In many cases, you will want to do also add a defer:

f := bufio.NewWriter(os.Stdout)
defer f.Flush()
f.Write(b)

This will ensure that the buffer is flushed when you return from the function.

huangapple
  • 本文由 发表于 2012年11月17日 02:32:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/13422381.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定