Home >Backend Development >Golang >ReadString vs. ReadLine in Go: When Should You Use Each for Text Input?
reader.ReadString vs. ReadLine
In Go, bufio.Reader provides two methods for reading text from an input source: ReadString and ReadLine. These methods differ in how they handle the newline character at the end of a line:
ReadString reads a string until it encounters a specified delimiter character. By default, the delimiter is n (newline), which means it reads entire lines of text. However, it does not strip out the delimiter from the returned string. In the code mentioned in the question:
text, _ := reader.ReadString('\n')
The text variable will contain the input string including the newline character. Thus, when checking for "Alice" or "Bob," the newline character at the end of the input causes the comparison to fail.
ReadLine reads a line of text, excluding the newline character. It returns a byte slice containing the characters in the line and an error value indicating any encountered problems. To convert the byte slice to a string, it needs to be cast like so:
text, _, _ := reader.ReadLine()
By using ReadLine instead of ReadString, the newline character is not included in the text variable, resolving the issue of incorrect comparisons.
Another alternative is to manually trim the newline character from the input string using the strings.TrimSpace function:
text = strings.TrimSpace(text)
This removes any leading and trailing whitespace characters, including the newline, ensuring a clean comparison.
The above is the detailed content of ReadString vs. ReadLine in Go: When Should You Use Each for Text Input?. For more information, please follow other related articles on the PHP Chinese website!