回答

收藏

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

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

我有一个使用内置模板系统返回网页的代码。它接受它ResponseWriter标记结果a 。在某些情况下,我现在想标记作为字符串放入数据库中。我找到了一条接受法线Writer而不是a 的方法,ResponseWriter现在我正试图获得书面内容。- aPipe也许是我需要的,然后我可以ReadString从bufio在库中获取字符串。但事实证明,PipeReader从管道里出来的东西不兼容Reader(我需要该ReadString方法)。W00t。大惊喜。所以我可以用 the 读入 byte[]s ,PipeReader但在ReadString那里感觉有点错。: _$ d, ~* e' t6 `+ f! j1 Z/ a
那么最好的方法是什么呢?我应该坚持使用它Pipe读字节还是手册没有找到更好的东西?. y, I0 e1 C% @3 p6 j9 {9 {
                                                                ( _" Y( |1 h2 \4 c! v9 w% |
    解决方案:                                                                - Y8 ^; B) Q9 d' S% ~+ E3 Q
                                                                若您的函数接受 io.Writer,您可以传输 a*bytes.Buffer捕获输出。5 k- @" W8 i8 h' b$ }( ~
    // import "bytes"buf := new(bytes.Buffer)f(buf)buf.String() // returns a string of what was written to it
    % c- _: X* q" B, ~( b
若需要 http.ResponseWriter,你可以使用*httptest.ResponseRecorder. 响应记录器保存所有可以发送到 ResponseWriter 信息,但主体只是一个*bytes.Buffer.6 ]5 q9 Y5 L7 |
    // import "net/http/httptest"r := httptest.NewRecorder()f(r)r.Body.String() // r.Body is a *bytes.Buffer9 I6 o# O4 K; S* T
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则