Pourquoi reader.ReadString ne gère pas correctement les délimiteurs
Dans le programme Go fourni, le problème survient lors de l'utilisation de reader.ReadString(' n') pour lire une ligne de texte. Lorsque l'utilisateur saisit « Alice » ou « Bob », le texte saisi contient un caractère de nouvelle ligne supplémentaire, provoquant une incompatibilité avec le délimiteur spécifié ('n').
Solution : Couper ou utiliser ReadLine
Pour résoudre ce problème, vous pouvez soit couper les espaces (y compris le caractère de nouvelle ligne) après avoir lu la chaîne, soit utiliser reader.ReadLine() directement.
Découper les espaces avec des chaînes.TrimSpace
package main import ( "bufio" "fmt" "os" "strings" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Who are you? \n Enter your name: ") text, _ := reader.ReadString('\n') if aliceOrBob(strings.TrimSpace(text)) { fmt.Printf("Hello, ", text) } else { fmt.Printf("You're not allowed in here! Get OUT!!") } }
Utiliser ReadLine
package main import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Who are you? \n Enter your name: ") text, _, _ := reader.ReadLine() if aliceOrBob(string(text)) { fmt.Printf("Hello, ", text) } else { fmt.Printf("You're not allowed in here! Get OUT!!") } }
En manipulant correctement le chaîne d'entrée, le programme peut désormais identifier correctement si le nom de l'utilisateur est "Alice" ou "Bob" et répondre en conséquence.
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!