fprintln()在Windows下编写Linux风格的行尾

时间:2013-10-25 01:05:04

标签: go

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

正如Stephen Weinberg所说,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())