当前,为了表示go程序中的换行符,我使用\
。例如:

...将产生85 is U,后跟换行符。

但是,这似乎并不是所有的跨平台。在其他语言中,PHP用全局常量(PHP_EOL)表示这一点。 \
是在go / golang中以跨平台特定的方式表示换行符的正确方法吗?

我对此感到很好奇,因此决定看看fmt.Println到底做了什么。 http://golang.org/src/pkg/fmt/print.go

如果滚动到最底端,则会看到一个if addnewline,其中始终使用\
。我很难说这是否是最"跨平台"的方式,而go最初在早期与Linux绑定,但这就是std lib的用途。

最初我只是建议使用fmt.Fprintln,这可能仍然有效,好像当前功能不合适,可以提交错误,然后只需使用最新的Go编译代码即可。工具链。

让操作系统确定在许多情况下换行符是错误的。您真正想知道的是" record "分隔符,而Go假定您作为程序员应该知道。

即使二进制文件在Windows上运行,它也可能正在消耗Unix OS中的文件。

行尾由文件或文档的源代码确定是行尾而不是二进制文件正在运行的OS来

您始终可以使用特定于OS的文件来声明某些常量。就像_test.go文件仅在执行go test时使用一样,_[os].go仅在构建到该目标平台时才包括在内。

基本上,您需要添加以下文件:

您可以在每个main_[os].go文件中声明LineBreak常量,并在main.go中使用逻辑。

文件的内容如下所示:

main_darwin.go

main_linux.go

main_windows.go

,只需在您的main.go文件中,编写代码并参考LineBreak

main.go