例如,在 Python 中,我可以执行以下操作:
realout = sys.stdout
sys.stdout = StringIO.StringIO()
some_function() # prints to stdout get captured in the StringIO object
result = sys.stdout.getvalue()
sys.stdout = realout
你能在 Go 中做到这一点吗?
原文由 Andres Riofrio 发布,翻译遵循 CC BY-SA 4.0 许可协议
我同意你应该使用
fmt.Fprint
功能,如果你能管理的话。但是,如果您不控制要捕获其输出的代码,则可能没有该选项。Mostafa 的答案有效,但如果你想在没有临时文件的情况下进行,你可以使用 os.Pipe 。这是一个与 Mostafa 的示例等效的示例,其中包含一些受 Go 测试包启发的代码。