Go · Intermediário · Inglês · Técnico
bufio.Scanner
Tipo do pacote bufio que lê entrada em partes, por padrão linha a linha, de qualquer io.Reader. Scan avança e Text devolve o trecho atual.
Onde usar
Usado para ler arquivos grandes e stdin sem carregar tudo na memória. Linhas maiores que 64 KiB fazem Scan parar com erro, a menos que se aumente o buffer.
Em código
sc := bufio.NewScanner(os.Stdin)
for sc.Scan() {
fmt.Println("li:", sc.Text())
}
if err := sc.Err(); err != nil {
log.Fatal(err)
}Exemplos
Read the file line by line with a bufio.Scanner.
Leia o arquivo linha a linha com um bufio.Scanner.
The scanner stopped because the line was longer than 64 KB.
O scanner parou porque a linha tinha mais de 64 KB.
Cuidado
Depois do laço, confira scanner.Err(); sem isso, uma falha de leitura passa como se fosse o fim do arquivo.