Считывание stdin построчно в цикле используя fmt.Scanln(&str)
Возникла проблема во время знакомства с go: как в цикле считать построчно весь stdin используя fmt.Scanln(&str), если он возвращает 2 значения
for fmt.Scanln(&str) {
fmt.Println(str)
}
такой вариант естественно выдает ошибку и все что приходит в голову это переместить вызов fmt.Scanln(&str) внутрь цикла, а в условие поместить проверку по одному из возвращаемых значений.
Ответы (2 шт):
Автор решения: Ainar-G
→ Ссылка
Можете воспользоваться трёхинструкционным for:
for _, err = fmt.Scanln(&str); err == nil; _, err = fmt.Scanln(&str) {
fmt.Println(str)
}
if err != nil && err != io.EOF {
panic(err)
}
Автор решения: hedgehogues
→ Ссылка
Вы всегда можете воспользоваться буферизированным reader и делать это в цикле:
package main
import (
"fmt"
"bufio"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println(text)
}