【问题标题】:fprintln() writting Linux-style end of line under Windowsfprintln() 在 Windows 下编写 Linux 风格的行尾
【发布时间】:2013-10-25 01:05:03
【问题描述】:

我在 Windows 上运行 Go 并使用 fmt.Fprintln(w, line) 将行写入文件,但行尾是 Linux 风格的行尾,而不是 Windows。我需要设置环境变量吗?

【问题讨论】:

标签: go


【解决方案1】:

不,fmt 总是使用 unix 行尾。如果你想要不同的东西,你需要自己打印。

【讨论】:

【解决方案2】:

正如斯蒂芬·温伯格所说,fmt 中的打印功能始终使用\n 作为行 分隔符。

您可以在代码here 中看到这一点。

作为一种解决方法,您可以定义自己的打印函数或使用Printf 而不是Println

fmt.Printf("Foo\r\n")

如果你想为你的程序运行环境中使用的换行定义一个全局字符串, 您可以为每个操作系统创建一个.go 文件并使用构建标签来选择正确的。

或者,编写一个解析runtime.GOOSplay)的函数:

func Newline() string {
    switch runtime.GOOS {
    case "windows":
        return "\r\n"
    // ...more...
    case "linux":
        fallthrough
    default:
        return "\n"
    }
}

fmt.Printf("This is a line%s", Newline())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2012-09-28
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    相关资源
    最近更新 更多