0

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

4

2 回答 2

1

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

于 2013-10-25T01:08:33.677 回答
1

正如斯蒂芬温伯格已经说过的那样,打印功能fmt始终\n用作行分隔符。

您可以在此处的代码中看到这一点。

作为一种解决方法,您可以定义自己的打印功能或使用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())
于 2013-10-25T01:51:31.433 回答