麻烦问一下 println 和 print\n 底层有区别吗

2022-04-11 00:03:27 +08:00
 saleacy
3442 次点击
所在节点    Go 编程语言
11 条回复
pennai
2022-04-11 00:05:19 +08:00
啥语言啊?开源的你直接点击源代码看看就行了
neoblackcap
2022-04-11 03:26:10 +08:00
当然有区别,你自己手动输入换行符可是不会根据平台不一样换行的。
Windows 下,换行可是 CRLF(\r\n)
yaoyao1128
2022-04-11 06:55:31 +08:00
yaoyao1128
2022-04-11 07:04:37 +08:00
yin1999
2022-04-11 07:06:19 +08:00
可以看这里: https://cs.opensource.google/go/go/+/refs/tags/go1.18:src/fmt/print.go;drc=refs%2Ftags%2Fgo1.18;l=1164

这两种只有在传入字符串参数的时候会有不同
yin1999
2022-04-11 07:08:11 +08:00
@yin1999 没打完,print 连续传入两个字符串参数时,输出的字符串之间是无空格的,而 println 在输出两个连续的字符串之间是有空格的,其它没有区别
yolee599
2022-04-11 09:06:28 +08:00
有区别,println 会根据不同的平台决定添加 \r\n 还是 \n 。
wudi77
2022-04-11 11:28:52 +08:00
System.lineSeparator()
westoy
2022-04-11 11:57:26 +08:00
@yolee599

不,go 的 println 没做 CRLF , 直接\n 的

这是一个拖到 win10 之后就不处理的 feature https://github.com/golang/go/issues/28822
timpaik
2022-04-11 12:49:45 +08:00
有些 println 还会主动刷新一下缓冲区?
WuSiYu
2022-04-11 21:07:55 +08:00
有的语言( or 实现)是集成了换行和刷新缓冲,比如 C++的 std::endl ,如果输出是重定向到了文件的话,可能会导致执行慢不少,打 acm 应该都有体会

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

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

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

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

© 2021 V2EX