回答

收藏

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

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

我有一个使用内置模板系统返回网页的代码。它接受它ResponseWriter标记结果a 。在某些情况下,我现在想标记作为字符串放入数据库中。我找到了一条接受法线Writer而不是a 的方法,ResponseWriter现在我正试图获得书面内容。- aPipe也许是我需要的,然后我可以ReadString从bufio在库中获取字符串。但事实证明,PipeReader从管道里出来的东西不兼容Reader(我需要该ReadString方法)。W00t。大惊喜。所以我可以用 the 读入 byte[]s ,PipeReader但在ReadString那里感觉有点错。' e$ q) h3 M; k' o; k+ R9 x
那么最好的方法是什么呢?我应该坚持使用它Pipe读字节还是手册没有找到更好的东西?' @  z/ D+ F) B8 R
                                                                5 c! G* |6 }0 s1 P9 m2 {
    解决方案:                                                               
" |4 o3 F9 h  f4 x1 C' e# v8 a                                                                若您的函数接受 io.Writer,您可以传输 a*bytes.Buffer捕获输出。
, _6 @9 q8 c; F3 A- i
    // import "bytes"buf := new(bytes.Buffer)f(buf)buf.String() // returns a string of what was written to it
    * I' L  H' Q; Q/ }# f) z
若需要 http.ResponseWriter,你可以使用*httptest.ResponseRecorder. 响应记录器保存所有可以发送到 ResponseWriter 信息,但主体只是一个*bytes.Buffer.8 [1 \% M& |6 S4 r9 `/ I
    // import "net/http/httptest"r := httptest.NewRecorder()f(r)r.Body.String() // r.Body is a *bytes.Buffer& e; M- n' F/ w1 T! e6 C) H/ \( F) ?5 q
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则