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

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

这两种只有在传入字符串参数的时候会有不同
yin1999
2022 年 4 月 11 日
@yin1999 没打完,print 连续传入两个字符串参数时,输出的字符串之间是无空格的,而 println 在输出两个连续的字符串之间是有空格的,其它没有区别
yolee599
2022 年 4 月 11 日
有区别,println 会根据不同的平台决定添加 \r\n 还是 \n 。
wudi77
2022 年 4 月 11 日
System.lineSeparator()
westoy
2022 年 4 月 11 日
@yolee599

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

这是一个拖到 win10 之后就不处理的 feature https://github.com/golang/go/issues/28822
timpaik
2022 年 4 月 11 日
有些 println 还会主动刷新一下缓冲区?
WuSiYu
2022 年 4 月 11 日
有的语言( 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