Go 捕获 os.Stdout 的输出
Go 里面有时候我们想捕获,或者丢弃通过fmt.Print系列方法打印到Stdout的数据
丢弃输出
package main
import (
"os"
"fmt"
)
var oldStdout *os.File
func main()
// usage:
// discardStdout()
// fmt.Println("Hello, playground")
// restoreStdout()
func discardStdout() error
func restoreStdout()
运行示例,将只会输出: Hello, playground 2
捕获输出
- 来自 stackoverflow 的回答
from: stackoverflow
package main
import (
"os"
"fmt"
"io/ioutil"
)
func main()
稍加调整以方便重复使用:
package main
import (
"os"
"io/ioutil"
"fmt"
)
var oldStdout, newReader *os.File
func main()
// usage:
// rewriteStdout()
// fmt.Println("Hello, playground")
// msg := restoreStdout()
func rewriteStdout()
func restoreStdout() string
注意: 要读取
newReader里的数据,必须先关闭 writer. 不然会一直阻塞。