@danforth

Почему не работает считалка введенных строк на Go?

Всем привет! Читаю книгу Язык программирования Go (2016)[Керниган Б., Донован А.], и тут в одной из первых глав есть небольшая программа-пример. Я все эти примеры ввожу у себя на ПК, чтобы набивалась "мышечная память" и привыкал к синтаксису. Суть программы в том, что она считывает ввод, и показывает сколько раз вы вводили определенный текст.
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	counts := make(map[string]int)
	input := bufio.NewScanner(os.Stdin)

	for input.Scan() {
		counts[input.Text()]++
	}

	for line, n := range counts {
		if n > 1 {
			fmt.Printf("%d - %s", n, line)
		}
	}
}

Проблема в том, что ни под Windows 10 x64, ни под ubuntu/xenial64 на версии golang-1.7.1 данная программа не отрабатывает. Вот что я делаю:
  1. go run main.go
  2. пишу test
  3. опять пишу test, и т.д., она ничего не считает, хотя консоль уходит в прослушку (пропадает путь к файлу, выглядит это так будто программа действительно слушает мой ввод)


Подскажите, в чем проблема данного примера, и почему ничего не работает?
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
alsopub
@alsopub
Попробуйте (win): type имяфайла.txt | go run main.go
Если вводить данные в консоли, то нужно обозначить "конец файла" нажатием Ctrl+Z + Enter.
Либо как-то иначе читать данные с консоли.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы