栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Go中,如何将函数的标准输出捕获到字符串中?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Go中,如何将函数的标准输出捕获到字符串中?

我同意,

fmt.Fprint
只要可以管理,就应该使用这些功能。但是,如果您不控制要捕获其输出的代码,则可能没有该选项。

Mostafa的答案有效,但是如果您想在没有临时文件的情况下进行操作,则可以使用os.Pipe。这是一个与Mostafa等效的示例,其中一些代码受Go的测试包的启发。

package mainimport (    "bytes"    "fmt"    "io"    "os")func print() {    fmt.Println("output")}func main() {    old := os.Stdout // keep backup of the real stdout    r, w, _ := os.Pipe()    os.Stdout = w    print()    outC := make(chan string)    // copy the output in a separate goroutine so printing can't block indefinitely    go func() {        var buf bytes.Buffer        io.Copy(&buf, r)        outC <- buf.String()    }()    // back to normal state    w.Close()    os.Stdout = old // restoring the real stdout    out := <-outC    // reading our temp stdout    fmt.Println("previous output:")    fmt.Print(out)}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号