У меня есть этот простой код для чтения всего ввода с консоли:
input := bufio.NewScanner(os.Stdin) //Creating a Scanner that will read the input from the console
for input.Scan() {
if input.Text() == "end" { break } //Break out of input loop when the user types the word "end"
fmt.Println(input.Text())
}
Код как работает. То, что я хочу сделать, это избавиться от if-предложения. В моем понимании документации, если строка пуста, input.Scan()
должен возвращать false и, следовательно, выходить из цикла.
Сканирование продвигает сканер к следующему токену, который затем будет доступен через метод Bytes или Text. Он возвращает false, когда сканирование останавливается, либо достигнув конца ввода, либо ошибки. После того, как Scan вернет false, метод Err вернет любую ошибку, которая произошла во время сканирования, за исключением того, что если она была
io.EOF
, Err вернет нуль. Сканирование паники, если функция split возвращает 100 пустых токенов, не продвигая вход. Это обычный режим ошибок для сканеров.
Я неверно истолковал документацию, и на самом деле необходимо, чтобы такое условие if-break разразилось? (Я использую Go 1.5.2, запуская программу, используя "go run".)