回答

收藏

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

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

我有一个使用内置模板系统返回网页的代码。它接受它ResponseWriter标记结果a 。在某些情况下,我现在想标记作为字符串放入数据库中。我找到了一条接受法线Writer而不是a 的方法,ResponseWriter现在我正试图获得书面内容。- aPipe也许是我需要的,然后我可以ReadString从bufio在库中获取字符串。但事实证明,PipeReader从管道里出来的东西不兼容Reader(我需要该ReadString方法)。W00t。大惊喜。所以我可以用 the 读入 byte[]s ,PipeReader但在ReadString那里感觉有点错。- _7 x& t# R# ~
那么最好的方法是什么呢?我应该坚持使用它Pipe读字节还是手册没有找到更好的东西?4 n0 v4 p5 U0 m- W
                                                                8 [8 P+ D& F' l9 c# ?  |; ]
    解决方案:                                                               
4 f) v5 }: ~( |; X3 D8 P! I6 b                                                                若您的函数接受 io.Writer,您可以传输 a*bytes.Buffer捕获输出。1 g; M; O) q; l0 e# w2 a9 F
    // import "bytes"buf := new(bytes.Buffer)f(buf)buf.String() // returns a string of what was written to it6 o$ p! K" `& X( ]4 S6 z
若需要 http.ResponseWriter,你可以使用*httptest.ResponseRecorder. 响应记录器保存所有可以发送到 ResponseWriter 信息,但主体只是一个*bytes.Buffer.- Q  k+ x& K( y- f. q, y
    // import "net/http/httptest"r := httptest.NewRecorder()f(r)r.Body.String() // r.Body is a *bytes.Buffer
    7 v5 W8 v5 K5 [5 w  t. d' ~
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则