回答

收藏

从 Writer 获取字符串的最佳方法

技术问答 技术问答 165 人阅读 | 0 人回复 | 2023-09-11

我有一个使用内置模板系统返回网页的代码。它接受它ResponseWriter标记结果a 。在某些情况下,我现在想标记作为字符串放入数据库中。我找到了一条接受法线Writer而不是a 的方法,ResponseWriter现在我正试图获得书面内容。- aPipe也许是我需要的,然后我可以ReadString从bufio在库中获取字符串。但事实证明,PipeReader从管道里出来的东西不兼容Reader(我需要该ReadString方法)。W00t。大惊喜。所以我可以用 the 读入 byte[]s ,PipeReader但在ReadString那里感觉有点错。! i3 B6 C  A5 y1 y7 ]4 V8 h/ L, M8 w
那么最好的方法是什么呢?我应该坚持使用它Pipe读字节还是手册没有找到更好的东西?
: C/ Y1 i' Y5 D0 u2 N& J. D3 }1 h                                                               
7 e" i8 U& N/ G' }3 m' q    解决方案:                                                                1 t6 q* G! Y" a  m
                                                                若您的函数接受 io.Writer,您可以传输 a*bytes.Buffer捕获输出。
. K' z& j0 P0 r4 p
    // import "bytes"buf := new(bytes.Buffer)f(buf)buf.String() // returns a string of what was written to it. F: K! B7 p8 v; G
若需要 http.ResponseWriter,你可以使用*httptest.ResponseRecorder. 响应记录器保存所有可以发送到 ResponseWriter 信息,但主体只是一个*bytes.Buffer.$ p% w, |- b( p; k, C
    // import "net/http/httptest"r := httptest.NewRecorder()f(r)r.Body.String() // r.Body is a *bytes.Buffer: T- a  ?2 Q, B9 Z  p: q8 A
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则