Publicado em

Input do Utilizador (bufio) em Go

Partilhar:

Introdução

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

Porque 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() {
	inputDoUtilizador := bufio.NewReader(os.Stdin)

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

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

	fmt.Print("Insere a tua idade: ")
	idade, _ := inputDoUtilizador.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 utilizador inserir um valor inesperado, o programa deve ser capaz de o identificar e, possivelmente, solicitar ao utilizador que insira o valor novamente.

Benefícios da Interatividade

Interações diretas com o utilizador podem transformar um programa simples em uma ferramenta poderosa. Receber feedback direto ou dados do utilizador 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 utilizador após uma ação. Pode ser uma simples mensagem de confirmação ou um aviso.
  2. Mensagens Claras: As instruções para o utilizador 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 utilizador, valide-os. Por exemplo, se esperar um número, certifique-se de que o que foi inserido é 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!