Go 如何停止fmt.print()打印到输出?
我正在使用一个包,它的代码中有一些Go 如何停止fmt.print()打印到输出?,go,Go,我正在使用一个包,它的代码中有一些fmt.print()s,我想阻止它们打印到输出中。我希望在不更改包中的代码的情况下,仅通过向我的main.go添加一些行来抑制它们 可以强制fmt不将打印记录到输出吗?可以,只需转移os.Stdout和/或os.Stderr,例如: package main import ( "fmt" "os" ) func main() { temp := os.Stdout os.Stdout = nil // turn it
fmt.print()
s,我想阻止它们打印到输出中。我希望在不更改包中的代码的情况下,仅通过向我的main.go添加一些行来抑制它们
可以强制fmt
不将打印记录到输出吗?可以,只需转移os.Stdout
和/或os.Stderr
,例如:
package main
import (
"fmt"
"os"
)
func main() {
temp := os.Stdout
os.Stdout = nil // turn it off
packageFunctions() // call you package functions here
os.Stdout = temp // restore it
fmt.Println("Bye")
}
func packageFunctions() {
fmt.Println("Hi")
}
输出:
Bye
您可以将其转移到临时文件:
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
)
func main() {
tmpfile, err := ioutil.TempFile("", "example")
if err != nil {
log.Fatal(err)
}
fmt.Println(tmpfile.Name())
// defer os.Remove(tmpfile.Name()) // clean up
temp := os.Stdout
os.Stdout = tmpfile
packageFunctions() // call you package functions here
if err := tmpfile.Close(); err != nil {
log.Fatal(err)
}
os.Stdout = temp // restore it
fmt.Println("Bye")
}
func packageFunctions() {
fmt.Println("Hi")
}
请参阅:
使用记录器而不是fmt.Print(),以便进行配置。