Pular para o conteúdo principal
Publicado em

Input do Usuário (bufio) em Go

Compartilhar:

Introdução

Na programação, a interação com o usuário é um componente essencial de muitas aplicações. Em Go, a biblioteca bufio é a ferramenta de escolha para essa interatividade. Mas por que precisamos dela?

Por que usar a Biblioteca bufio?

Go já fornece pacotes para ler inputs, como o fmt. No entanto, para inputs mais complexos ou para ler grandes quantidades de dados de forma eficiente, a bufio é mais adequada. Ela permite ler dados em blocos, em vez de um caractere de cada vez, o que pode melhorar significativamente a eficiência.

Como funciona o bufio?

A biblioteca bufio fornece um buffer, que é essencialmente um espaço na memória onde os dados podem ser armazenados temporariamente antes de serem processados. Isso permite que a aplicação leia ou escreva grandes blocos de dados de uma vez, em vez de lidar com cada byte individualmente.

NewReader() e ReadString()

Com a função NewReader(), criamos um novo leitor associado a uma stream, como os.Stdin. Depois, podemos usar o método ReadString() para ler dados até um delimitador específico.

package main

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

func main() {
	inputDoUsuario := bufio.NewReader(os.Stdin)

	fmt.Print("Digite o seu primeiro nome: ")
	primeiroNome, _ := inputDoUsuario.ReadString('\n')

	fmt.Print("Digite o seu último nome: ")
	ultimoNome, _ := inputDoUsuario.ReadString('\n')

	fmt.Print("Digite a sua idade: ")
	idade, _ := inputDoUsuario.ReadString('\n')

	/*
		CR+LF -> \r\n
		CR -> \r
		LF -> \n
	*/

	fmt.Printf("Nome: %s %s\nIdade: %s",
						 strings.ReplaceAll(primeiroNome, "\r\n", ""),
						 strings.ReplaceAll(ultimoNome, "\r\n", ""),
						 strings.ReplaceAll(idade, "\r\n", ""))
}

Lidar com erros no bufio

Um aspecto vital ao trabalhar com inputs é o tratamento de erros. No exemplo acima, ignoramos os erros para simplificar, mas na prática, é essencial lidar com eles. Por exemplo, se um usuário inserir um valor inesperado, o programa deve ser capaz de identificá-lo e, possivelmente, solicitar ao usuário que insira o valor novamente.

Benefícios da Interatividade

Interações diretas com o usuário podem transformar um programa simples em uma ferramenta poderosa. Receber feedback direto ou dados do usuário pode influenciar o fluxo do programa, permitindo personalizações e tornando a experiência mais envolvente.

Dicas para melhorar a interatividade

  1. Feedback Visual: Sempre forneça feedback ao usuário após uma ação. Pode ser uma simples mensagem de confirmação ou um aviso.
  2. Mensagens Claras: As instruções para o usuário devem ser claras e concisas. Se um erro ocorrer, informe o que deu errado e como corrigi-lo.
  3. Validação de Inputs: Antes de processar os dados do usuário, valide-os. Por exemplo, se esperar um número, certifique-se de que o que foi digitado é realmente um número.

Conclusão

O pacote bufio em Go é uma ferramenta versátil que permite uma ampla gama de operações relacionadas a buffers, especialmente quando se trata de ler e escrever dados. Compreender as suas capacidades pode melhorar significativamente a eficiência e a interatividade dos seus programas em Go.

Happy coding!