Created
April 1, 2015 06:35
-
-
Save tomcatzh/5d1d0d9a95cecba798d1 to your computer and use it in GitHub Desktop.
Golang readline and writeline
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func readLines(path string) ([]string, error) { | |
file, err := os.Open(path) | |
if err != nil { | |
return nil, err | |
} | |
defer file.Close() | |
var lines []string | |
scanner := bufio.NewScanner(file) | |
for scanner.Scan() { | |
lines = append(lines, scanner.Text()) | |
} | |
return lines, scanner.Err() | |
} | |
// writeLines writes the lines to the given file. | |
func writeLines(lines []string, path string) error { | |
file, err := os.Create(path) | |
if err != nil { | |
return err | |
} | |
defer file.Close() | |
w := bufio.NewWriter(file) | |
for _, line := range lines { | |
fmt.Fprintln(w, line) | |
} | |
return w.Flush() | |
} |
TheFprintln
adds \n
or \r\n
depending on OS. But the WriteString
doesn't.
var nl = fmt.Sprintln() // new line, depending on OS
// [...]
w.WriteString(line)
w.WriteString(nl)
Hah. It seems Go every time uses \n
. Interesting.
Thus,
w.WriteString(line)
w.WrieByte('\n')
why you don't handle err from fmt.Fprintln(w, line)
?
wouldn't it be better to write like this
...
for _, line := range lines {
_, err = fmt.Fprintln(w, line)
if err != nil {
return err
}
}
...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
replace
with