我在Windows上运行Go并将行写入带有fmt.Fprintln(w, line)
的文件,但行尾是Linux风格的行尾,而不是Windows。是否有我需要设置的环境变量或其他东西?
不,fmt 总是使用 unix 行尾。如果你想要不同的东西,你需要自己打印。
正如Stephen Weinberg已经说过的,fmt
中的print函数总是使用n
作为行。分隔符。
您可以在此处的代码中看到这一点。
作为解决方法,您可以定义自己的打印功能或使用Printf
而不是Println
:
fmt.Printf("Foorn")
如果要为程序运行环境中使用的换行符定义全局字符串,您可以为每个操作系统创建一个.go
文件,并使用构建标记选择正确的操作系统。
或者,编写一个解析runtime.GOOS
(播放)的函数:
func Newline() string {
switch runtime.GOOS {
case "windows":
return "rn"
// ...more...
case "linux":
fallthrough
default:
return "n"
}
}
fmt.Printf("This is a line%s", Newline())