fprintln()在Windows下写入Linux风格的换行符

huangapple go评论88阅读模式
英文:

fprintln() writting Linux-style end of line under Windows

问题

你好!根据你的描述,你在Windows上使用Go语言,并使用fmt.Fprintln(w, line)将文本写入文件。但是,行尾符是Linux风格的,而不是Windows风格的。你是否需要设置环境变量或其他什么东西来解决这个问题呢?

英文:

I'm running Go on Windows and writing lines to a file with fmt.Fprintln(w, line), but the end of line is Linux style end of lines and not Windows. Is there an environment variable I need to set or something?

答案1

得分: 1

不,fmt始终使用Unix换行符。如果你想要不同的换行符,你需要自己打印它。

英文:

No, fmt always uses unix line endings. If you want something different, you need to print it yourself.

答案2

得分: 1

正如Stephen Weinberg所说,fmt中的print函数总是使用\n作为换行符。

你可以在这里的代码中看到这一点。

作为一种解决方法,你可以定义自己的print函数,或者使用Printf代替Println

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

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

另外,你可以编写一个解析runtime.GOOS的函数(play链接):

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())
英文:

As Stephen Weinberg already said, the print function in fmt always use \n as line
separator.

You can see this in the code here.

As a workaround you may define your own print function or use Printf instead of Println:

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

If you want to define a global string for the newline used in the environment your program runs,
you may create a .go file for each operating system and use build tags to select the right one.

Alternatively, write a function which parses runtime.GOOS (play):

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())

huangapple
  • 本文由 发表于 2013年10月25日 09:05:03
  • 转载请务必保留本文链接:https://go.coder-hub.com/19579407.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定