首页 > 解决方案 > 如何将终端中的 go 程序的输出通过管道传输到另一个程序?

问题描述

我想对 go 程序产生的输出运行 grep。使用其他语言,我可以轻松做到。例如:java 测试 | grep 世界

即使将输出重定向到文件似乎也不起作用,并且创建的文件是空的,终端仍然打印输出。

package main
func main() {
  println("One")
  println("Hello")
}

预期的:

go build test.go
./test | grep 'el'
Hello

实际的:

go build test.go
./test | grep 'el'
One
Hello

标签: goterminaloutputio-redirection

解决方案


我发现了我的错误。

来自 println 文档:

println 内置函数以特定于实现的方式格式化其参数并将结果写入标准错误。

因此,它不会在标准输出上输出。要打印到标准输出,可以使用 fmt.Println 代替。


推荐阅读