Aller au contenu principal
Publié le

Entrée Utilisateur (bufio) en Go

Partager :

Introduction

En programmation, l'interaction avec l'utilisateur est une composante essentielle de nombreuses applications. En Go, la bibliothèque bufio est l'outil de prédilection pour cette interactivité. Mais pourquoi en avons-nous besoin ?

Pourquoi utiliser la Bibliothèque bufio ?

Go fournit déjà des packages pour lire les entrées, comme fmt. Cependant, pour des entrées plus complexes ou pour lire de grandes quantités de données efficacement, bufio est plus adaptée. Elle permet de lire les données par blocs plutôt qu'un caractère à la fois, ce qui peut améliorer considérablement l'efficacité.

Comment fonctionne bufio ?

La bibliothèque bufio fournit un buffer, qui est essentiellement un espace en mémoire où les données peuvent être stockées temporairement avant d'être traitées. Cela permet à l'application de lire ou d'écrire de grands blocs de données en une seule fois, au lieu de traiter chaque octet individuellement.

NewReader() et ReadString()

Avec la fonction NewReader(), nous créons un nouveau lecteur associé à un stream, tel que os.Stdin. Nous pouvons ensuite utiliser la méthode ReadString() pour lire les données jusqu'à un délimiteur spécifique.

package main

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

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

	fmt.Print("Entrez votre prénom : ")
	prenom, _ := entreeUtilisateur.ReadString('\n')

	fmt.Print("Entrez votre nom de famille : ")
	nomFamille, _ := entreeUtilisateur.ReadString('\n')

	fmt.Print("Entrez votre âge : ")
	age, _ := entreeUtilisateur.ReadString('\n')

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

	fmt.Printf("Nom : %s %s\nÂge : %s",
						 strings.ReplaceAll(prenom, "\r\n", ""),
						 strings.ReplaceAll(nomFamille, "\r\n", ""),
						 strings.ReplaceAll(age, "\r\n", ""))
}

Gestion des erreurs dans bufio

Un aspect essentiel lors du travail avec les entrées est la gestion des erreurs. Dans l'exemple ci-dessus, nous avons ignoré les erreurs pour simplifier, mais en pratique il est indispensable de les traiter. Par exemple, si un utilisateur saisit une valeur inattendue, le programme doit être capable de l'identifier et, éventuellement, inviter l'utilisateur à saisir à nouveau la valeur.

Avantages de l'Interactivité

Les interactions directes avec l'utilisateur peuvent transformer un programme simple en un outil puissant. Recevoir des retours directs ou des données de l'utilisateur peut influencer le flux du programme, permettant des personnalisations et rendant l'expérience plus engageante.

Conseils pour améliorer l'interactivité

  1. Retour Visuel : Fournissez toujours un retour à l'utilisateur après une action. Cela peut être un simple message de confirmation ou un avertissement.
  2. Messages Clairs : Les instructions destinées à l'utilisateur doivent être claires et concises. Si une erreur se produit, indiquez ce qui s'est mal passé et comment y remédier.
  3. Validation des Entrées : Avant de traiter les données de l'utilisateur, validez-les. Par exemple, si vous attendez un nombre, assurez-vous que ce qui a été saisi est bien un nombre.

Conclusion

Le package bufio en Go est un outil polyvalent qui permet une large gamme d'opérations liées aux buffers, notamment en ce qui concerne la lecture et l'écriture de données. Comprendre ses capacités peut améliorer considérablement l'efficacité et l'interactivité de vos programmes Go.

Happy coding!