ExpertiDict

Go · Intermediário · Inglês · Técnico

bufio.Scanner

/ˈbjuː.fi.oʊ ˈskæn.ɚ/tipo

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.

Veja também

Todos os termos de Go