我有一段代码使用内置模板系统返回一个网页.它接受ResponseWriter写入结果标记的内容.我现在想要将标记作为字符串,并在某些情况下将其放入数据库中.我考虑了一个接受正常Writer而不是a的方法,ResponseWriter现在我试图找到书面内容.啊哈 - 一个Pipe可能是我需要的,然后我可以ReadString从bufio库中获取字符串.但事实证明,PipeReader从管道出来是不兼容的Reader(我需要的ReadString方法).W00t.大惊喜.所以我可以使用它读取byte [] s PipeReader但是当ReadString它存在时感觉有点不对劲.
那么最好的方法是什么呢?我应该坚持使用Pipe和读取字节还是有更好的东西,我在手册中没有找到?
Ste*_*erg 116
如果您的函数接受io.Writer,则可以传递a *bytes.Buffer来捕获输出.
// import "bytes"
buf := new(bytes.Buffer)
f(buf)
buf.String() // returns a string of what was written to it
Run Code Online (Sandbox Code Playgroud)
如果它需要http.ResponseWriter,你可以使用*httptest.ResponseRecorder.响应记录器包含可以发送到ResponseWriter的所有信息,但是正文只是一个*bytes.Buffer.
// import "net/http/httptest"
r := httptest.NewRecorder()
f(r)
r.Body.String() // r.Body is a *bytes.Buffer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28825 次 |
| 最近记录: |