@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, и т.д., она ничего не считает, хотя консоль уходит в прослушку (пропадает путь к файлу, выглядит это так будто программа действительно слушает мой ввод)


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

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

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект