Beheben von Scanf-Problemen in Go unter Windows
Die Scanf-Funktion in Go ist für potenzielle Komplikationen bekannt, insbesondere auf Windows-Systemen. Beim Ausführen eines Programms, das Scanf zweimal verwendet, tritt das Problem auf, wenn die zweite Eingabeanforderung nicht registriert wird, was dazu führt, dass die Funktion abrupt beendet wird.
Um dieses Problem zu beheben, wird empfohlen, das bufio-Paket zu verwenden, das Folgendes bietet: benutzerfreundlichere Möglichkeit zur Handhabung von Ein- und Ausgabevorgängen. Der folgende Code demonstriert die bufio-Alternative:
<code class="go">func credentials() (string, string) { reader := bufio.NewReader(os.Stdin) // Initialize a bufio Reader fmt.Print("Enter Username: ") username, _ := reader.ReadString('\n') // Read the username, discarding any errors fmt.Print("Enter Password: ") password, _ := reader.ReadString('\n') // Read the password return strings.TrimSpace(username), strings.TrimSpace(password) // Remove trailing newline characters }</code>
Der Hauptunterschied besteht hier in der Verwendung von bufio.NewReader(), was eine strukturiertere Eingabeverarbeitung ermöglicht. Die ReadString()-Funktion liest Benutzereingaben bis zum angegebenen Trennzeichen (in diesem Fall „n“), was zu einem konsistenteren Eingabeabruf über verschiedene Betriebssysteme hinweg führt.
Durch die Verwendung dieses bufio-basierten Ansatzes können Sie dies tun Umgehen Sie die potenziellen Fallstricke von Scanf und sorgen Sie für eine zuverlässige Eingabeverarbeitung, unabhängig davon, ob Ihr Programm unter Windows oder Mac ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWarum schlägt Scanf unter Windows fehl und wie kann ich es mit bufio beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!