在 Windows 上的 GOLang 中使用 Scanf 时出错
GOLang 中的 Scanf 函数在尝试两次获取用户输入时可能会出现问题。第一次输入已成功检索,但在 Windows 系统上第二次尝试期间该函数突然终止。此行为在 macOS 上不会发生。
<code class="go">func credentials() (string, string) { var username string var password string fmt.Print("Enter Username: ") fmt.Scanf("%s", &username) fmt.Print("Enter Password: ") fmt.Scanf("%s", &password) return username, password }</code>
解决方案:
Scanf 的特殊之处在于它使用空格作为分隔符,这使得使用起来有些困难。 Bufio 提供了一种简化流程的卓越替代方案。
<code class="go">func credentials() (string, string) { reader := bufio.NewReader(os.Stdin) fmt.Print("Enter Username: ") username, _ := reader.ReadString('\n') fmt.Print("Enter Password: ") password, _ := reader.ReadString('\n') return strings.TrimSpace(username), strings.TrimSpace(password) // Remove trailing newline character }</code>
此修改后的代码解决了该问题,并在 Windows 和 macOS 上无缝运行。
以上是为什么 Windows 上的 Go 第二次输入时 Scanf 失败?的详细内容。更多信息请关注PHP中文网其他相关文章!