我希望我的应用程序显示:

press any key to exit ...

当我按any键时退出.

我怎样才能做到这一点?

注意:我已经用谷歌搜索过了,但是我找到的所有内容都需要在结尾处按Enter键.我想要C#中类似于Console.ReadKey()的代码.

我正在运行MS Windows.

推荐答案

包"golang.org/x/term"允许您将标准输入切换到RAW模式,以便一次读取每个字节.

package main

import (
    "fmt"
    "os"

    "golang.org/x/term"
)

func main() {
    // switch stdin into 'raw' mode
    oldState, err := term.MakeRaw(int(os.Stdin.Fd()))
    if err != nil {
        fmt.Println(err)
        return
    }
    defer term.Restore(int(os.Stdin.Fd()), oldState)

    b := make([]byte, 1)
    _, err = os.Stdin.Read(b)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("the char %q was hit", string(b[0]))
}

Go相关问答推荐

gorm如何声明未自动更新的unix时间戳米尔斯字段

无法在Macos上使用Azure Speech golang SDK

Golang html/模板&需要错误数量的参数1在模板中使用';调用';获得0&q;

+在具有html/模板Golang的Base64中

MaybeReadByte对通道的使用如何在Go中提供随机行为?

GO:如何指定类型约束,使S方法的参数类型与接收方的参数类型相同

Kafka架构注册表-Broker:Broker无法验证记录

Cypher 查找(多个)最低 node

使用 httptest 对 http 请求进行单元测试重试

是否可以在调试期间在 VSCode 中预览 github.com/shopspring/decimal 值?

GitHub 中 REST API 的 aws 凭证问题

无法将 graphql-ws 连接到 gqlgen

在 Go 中公开公共 JWK

如何在切片增长时自动将切片的新元素添加到函数参数

在恒等函数中将类型 T 转换为类型 U

Gorm 在保存/创建时序列化 struct

将接口方法的参数限制为几个允许的 struct ?

如何正确为 Go 中的值设置多种类型?

防止在 Go 公用文件夹中列出目录

无法识别同步错误.使用一次