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
Patricia Arquetteoriginal
2024-12-24 05:31:14811parcourir

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)
}

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)
}

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!

Déclaration:
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