Сканнер в Go не считывает как надо
Why the matrix[0] is empty?
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var n, m int
fmt.Scan(&n, &m)
matrix := make([][]byte, n)
scanner := bufio.NewScanner(os.Stdin)
for i := 0; i < n; i++ {
scanner.Scan()
matrix[i] = []byte(scanner.Text())
}
fmt.Println(matrix)
Input:
4 10
**********
*...*....*
*...*....*
Output:
[[] [42 42 42 42 42 42 42 42 42 42] [42 46 46 46 42 46 46 46 46 42] [42 46 46 46 42 46 46 46 46 42]]
Ответы (1 шт):
Автор решения: Pak Uula
→ Ссылка
Вы читаете числа как fmt.Scan(&n, &m). Эта функция читает два токена и останавливается. Так как она останавливается перед концом строки, то сканер в первой строчке ничего не считывает и вы получаете в matrix[0] пустую строку.
Замените ввод чисел на fmt.Scanln(&n, &m) - эта функция считает два числа и конец строки. Поэтому внутри цикла сканер уже будет обрабатывать следующую строку.