Go 语言 Printf 输出的字符串末尾被自动增加了一个百分号,如果去除?

2017-12-07 15:34:14 +08:00
 billion
fmt.Printf("请输入开始时间和结束时间。格式: %s startDate=2017-12-07 endDate=2017-12-10", os.Args[0])

期望的输出内容为:

请输入开始时间和结束时间。格式: ./mongo2mysql startDate=2017-12-07 endDate=2017-12-10

但是实际上在 Linux 和 Mac 的终端输出的内容都是:

请输入开始时间和结束时间。格式: ./mongo2mysql startDate=2017-12-07 endDate=2017-12-10%

如何把末尾的百分号去掉?

2948 次点击
所在节点    Go 编程语言
12 条回复
pathletboy
2017-12-07 15:40:51 +08:00
linux 实测没有百分号。
specita
2017-12-07 15:44:21 +08:00
mac 实测没有百分号
lululau
2017-12-07 15:45:24 +08:00
用的 zsh
undeflife
2017-12-07 15:45:47 +08:00
这各百分号是终端显示的换行吧
hguandl
2017-12-07 15:46:01 +08:00
这个貌似与终端有关,我在用 zsh 时就发现运行程序时如果输出末尾没有新的空行,会打出一个 % 作为提示。你可以尝试用输出重定向 > 将标准输出放到一个文件里,再打开看看是不是还有 %
rrfeng
2017-12-07 15:46:10 +08:00
我猜是终端检测到没有换行符所以现实的那个 %

你加个 \n 试试
lululau
2017-12-07 15:49:27 +08:00
@hguandl zsh 是个 shell,并不是终端
lululau
2017-12-07 15:49:32 +08:00
yonka
2017-12-07 15:54:27 +08:00
这个 % 是你的终端的 prompt。
原因是你这个少输出了个回车,所以输出内容跟新的 prompt 在同一行了。

这里应该是:

fmt.Printf("请输入开始时间和结束时间。格式: %s startDate=2017-12-07 endDate=2017-12-10\n", os.Args[0])
billion
2017-12-07 16:04:20 +08:00
确实我有 zsh。可能是这个问题。
cholerae
2017-12-07 19:44:36 +08:00
...
timothyye
2017-12-08 08:37:30 +08:00
哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/412816

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX