# #go
Вопрос:
Я пытался написать программу, которая принимает целочисленные данные от пользователя и выполняет некоторые вычисления. Что происходит, так это то, что каждый альтернативный раз программа заканчивается преждевременно, не приняв никаких входных данных. И Scanf, и Scanln следуют одному и тому же поведению.
Соответствующий кодекс:
func main() { var N int var output []int fmt.Println("Enter test cases") //This bottom line executes only every alternate time fmt.Scanf("%d", amp;N) testCases(N, N, output) }
Он выводит строку «Введите тестовые случаи», и программа завершается. Но когда я запускаю программу еще раз, она выполняется до конца. Затем этот шаблон повторяется каждый раз, когда я пытаюсь запустить программу.
Комментарии:
1. Я не могу воспроизвести это.
Ответ №1:
Лучше использовать пакет bufio, он реализует буферизованный ввод-вывод. scanf/scanln не буферизованы.
scanner := bufio.NewScanner(os.Stdin) scanner.Scan() input := scanner.Text()