Maison > développement back-end > Golang > Pourquoi « reader.ReadString » ne supprime-t-il pas le délimiteur initial ?

Pourquoi « reader.ReadString » ne supprime-t-il pas le délimiteur initial ?

Patricia Arquette
Libérer: 2024-12-24 05:31:14
original
806 Les gens l'ont consulté

Why Doesn't `reader.ReadString` Remove the Initial Delimiter?

reader.ReadString ne supprime pas le délimiteur initial

Dans le but de créer un programme qui accueille les utilisateurs nommés Alice ou Bob, un développeur a rencontré un problème où même les noms légitimes déclenchaient une réponse indésirable. Le programme a refusé à tort l'entrée à Alice et Bob.

Le problème

Le problème provient de l'utilisation de reader.ReadString('n') dans le programme. Cette fonction récupère les caractères jusqu'à ce qu'un caractère de nouvelle ligne soit rencontré. Cependant, il ne supprime pas automatiquement le délimiteur de la chaîne renvoyée, ce qui entraîne l'inclusion d'une nouvelle ligne supplémentaire dans la saisie de l'utilisateur.

Solution

Pour résoudre ce problème , il existe deux approches possibles :

1. Coupez la nouvelle ligne

Utilisez la fonction strings.TrimSpace pour supprimer tout espace de début ou de fin de la chaîne d'entrée avant de l'évaluer. Cela supprime efficacement le caractère de nouvelle ligne à l'origine du problème.

if aliceOrBob(strings.TrimSpace(text)) {
    fmt.Printf("Hello, ", text)
}
Copier après la connexion

2. Utiliser ReadLine au lieu de ReadString

Alternativement, la fonction ReadLine peut être utilisée à la place de ReadString. ReadLine récupère une ligne de texte sans inclure le caractère de nouvelle ligne dans la chaîne renvoyée.

text, _, _ := reader.ReadLine()
if aliceOrBob(string(text)) {
    fmt.Printf("Hello, ", text)
}
Copier après la connexion

Explication

La raison de l'utilisation de string(text) avec ReadLine est que ReadLine renvoie une tranche d'octets, tandis qu'aliceOrBob nécessite un argument de chaîne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal