首页 >后端开发 >Golang >如何在Go中不按回车键获得单个字符输入?

如何在Go中不按回车键获得单个字符输入?

DDD
DDD原创
2024-12-14 09:54:12783浏览

How to Get Single Character Input in Go Without Pressing Enter?

Go 中无需按 Enter 即可获取字符输入

为了避免 Go 中接收到字符输入后按 Enter 键,可以使用以下方法。

  1. 禁用输入缓冲:
    运行命令 exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run() 禁用输入缓冲。这允许程序在按下按键时立即读取字符。
  2. 抑制回声
    执行命令 exec.Command("stty", "-F", "/dev /tty", "-echo").Run() 禁止在屏幕上显示输入的字符。
  3. 阅读单个内容Byte
    使用 os.Stdin.Read(b) 从标准输入读取单个字节(字符)。即使用户在输入字符后没有按 Enter 键,此方法也会起作用。
  4. 示例
    以下代码说明了如何实现此方法:

    package main
    
    import (
        "fmt"
        "os"
        "os/exec"
    )
    
    func main() {
        // disable input buffering
        exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
        // do not display entered characters on the screen
        exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
    
        var b []byte = make([]byte, 1)
        for {
            os.Stdin.Read(b)
            fmt.Println("I got the byte", b, "("+string(b)+")")
        }
    }

此解决方案提供了与 C# 中的 Console.ReadKey() 类似的功能,允许您读取单个字符,无需等待用户按 Enter 键。

以上是如何在Go中不按回车键获得单个字符输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn