【问题标题】:How to print to console windows?如何打印到控制台窗口?
【发布时间】:2018-07-19 07:57:20
【问题描述】:

我想像这样从 cmd 运行我的 go 程序:

 C:\go\awesomeProject> goprogramm.exe -generate -val=2

并希望得到这样的反馈:

> Process started
> Something went wrong. Type e-mail to receive report:
> |...

是的,我用谷歌搜索了很多。标准输出,go exec'ing,管道等。不能混用。

【问题讨论】:

标签: windows go stdout stdin


【解决方案1】:

最简单的就是使用fmt包,以及它的全局函数,例如:

fmt.Println("Process started")
fmt.Println("Something went wrong. Type e-mail to receive report:")

var i int = 3
var err error = io.Eof
fmt.Printf("And some formatted text: number: %d, an error: %v\n", i, err)

如果您想要更多配置或重定向输出的选项,例如到一个文件(将来),那么你可以使用log 包。

log.Println("Process started")
log.Println("Something went wrong. Type e-mail to receive report:")

var i int = 3
var err error = io.Eof
log.Printf("And some formatted text: number: %d, an error: %v", i, err)

一个显着的区别是默认情况下fmt 包写入os.Stdout,而log 包写入os.Stderr。两者都出现在您的控制台中,但如果您想重定向这些流,则不应忘记。另一个区别是log 包会在每个调用不以一个结尾时附加一个换行符。

【讨论】:

  • 如何重定向到cmd?
  • 输出将出现在您的窗口中,没有任何重定向。我提到了重定向,因为根据您使用的包重定向标准输出或标准错误时,您可能会得到不同的输出。
  • 是的,输出出现在我的 IDE console 中。但是当我从command line运行exe时它没有出现
  • @StayCool 您确定您已重建并运行最新版本的应用程序吗?首先尝试使用go run appname.go 运行它,这样它总是会重新编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 2013-06-30
  • 2013-06-01
相关资源
最近更新 更多