Каков самый переносимый/кросс-платформенный способ представления новой строки в go/golang?

В настоящее время для представления новой строки в программах go я использую \n. Например:

package main
import "fmt"
func main() {
 fmt.Printf("%d is %s \n", 'U', string(85))
}

... даст 85 is U, а затем новую строку.

Однако это не похоже на кросс-платформу. Глядя на другие языки, PHP представляет это с глобальной константой (PHP_EOL). Является ли \n правильным способом представления новых строк в кросс-платформенной форме в go/golang?

2 ответа

Мне стало интересно, поэтому я решил посмотреть, что именно делается fmt.Println. http://golang.org/src/pkg/fmt/print.go

Если вы перейдете к самому дну, вы увидите if addnewline, где \n всегда используется. Я не могу с трудом говорить, если это самый "кросс-платформенный" способ сделать это, и раньше он был связан с linux, но тот, где он предназначен для std lib.

Я изначально собирался предлагать просто использовать fmt.Fprintln, и это может быть все еще актуальным, как если бы текущая функция не была подходящей, ошибка могла быть подана, а затем код просто должен был быть скомпилирован с помощью последней инструментальной комбинации Go.


Наличие ОС определяет, что символ новой строки происходит во многих контекстах, чтобы быть неправильным. То, что вы действительно хотите знать, - это то, что "записывающий" разделитель, и Go предполагает, что вы, как программист, должны это знать.

Даже если двоичный файл работает в Windows, он может потреблять файл из ОС Unix.

Конечные строки определяются тем, что источником файла или документа является строка, заканчивающаяся не операционной системой, в которой работает двоичный файл.

licensed under cc by-sa 3.0 with attribution.