mee*_*son 0 error-handling buffer templates go
可能是一个简单的问题,但我在延迟请求处理函数中的输出时遇到问题.当我执行我的模板而不是响应编写器时,我正在使用"bufio"写入,但似乎缓冲区只能在它吐出来之前保持这么多.我担心它会吐出部分页面,然后遇到错误,留下不完整和难以理解的响应.什么是确保一切都保持缓冲直到它准备好被释放到野外的最佳策略?
如果你想完全缓冲输出使用bytes.Buffer,例如:
var bufferPool = &sync.Pool{
New: func() interface{} {
return &bytes.Buffer{}
},
}
func getBuffer() (buf *bytes.Buffer) {
return bufferPool.Get().(*bytes.Buffer)
}
func putBuffer(buf *bytes.Buffer) {
buf.Reset()
bufferPool.Put(buf)
}
func handler(w http.ResponseWriter, req *http.Request) {
buf := getBuffer()
defer putBuffer(buf)
//....
fmt.Fprintf(buf, .....)
buf.WriteTo(w)
}
Run Code Online (Sandbox Code Playgroud)