首页 >后端开发 >Golang >如何在 Go 中即时读取标准输入中的单个字符?

如何在 Go 中即时读取标准输入中的单个字符?

Patricia Arquette
Patricia Arquette原创
2024-12-13 14:17:14868浏览

How Can I Read Single Characters from Standard Input Instantly in Go?

在 Go 中立即从标准输入读取字符

在 Go 中,从标准输入读取通常需要按 Enter 才能接收输入。但是,如果您希望应用程序立即响应任何按键,类似于 C# 中的 Console.ReadKey(),以下解决方案可以实现这一点。

提供的代码使用 stty 命令禁用输入缓冲,确保击键立即得到处理。字符回显也被抑制以防止显示输入。

这里是代码:

package main

import (
    "fmt"
    "os"
    "os/exec"
)

func main() {
    // Disable input buffering
    exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
    // Suppress input echoing
    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)+")")
    }
}

当此代码运行时,按任意键立即将字符字节表示形式和相应的字符返回到控制台.

以上是如何在 Go 中即时读取标准输入中的单个字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

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