Heim >Backend-Entwicklung >Golang >Warum behält „bufio.Reader.ReadString' von Go führende Trennzeichen bei und wie kann ich dieses Problem vermeiden?
Reader.ReadString behält möglicherweise führende Trennzeichen bei
In Go kann sich das Verhalten von bufio.Reader.ReadString beim Parsen von Eingaben unterscheiden. Stellen Sie sich das folgende Szenario vor:
import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Who are you? Enter your name: ") text, _ := reader.ReadString('\n') if text == "Alice" || text == "Bob" { fmt.Printf("Hello, ", text) } else { fmt.Printf("You're not allowed in here!") } }
Hier wird ReadString zum Lesen von Benutzereingaben verwendet und erwartet Namen, die mit einem Zeilenumbruchzeichen abgeschlossen sind. Wenn der eingegebene Name jedoch mit „Alice“ oder „Bob“ übereinstimmt, verweigert das Programm fälschlicherweise den Zugriff.
Ursache und Lösung
Dieses Problem tritt auf, weil ReadString führende Vorkommen beibehält des Trennzeichens (in diesem Fall 'n'). Wenn ein Name wie „Alice“ eingegeben wird, enthält die im Text gespeicherte Zeichenfolge sowohl „Alice“ als auch einen abschließenden Zeilenumbruch. Dieses zusätzliche Zeilenumbruchzeichen verhindert, dass der Zeichenfolgenvergleich mit dem erwarteten Wert übereinstimmt.
Um dieses Problem zu beheben, ziehen Sie die folgenden Ansätze in Betracht:
Das obige ist der detaillierte Inhalt vonWarum behält „bufio.Reader.ReadString' von Go führende Trennzeichen bei und wie kann ich dieses Problem vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!