登录
首页 >  Golang >  Go问答

我怎样才能在一段时间后获得输入而不按golang中的任何键

来源:stackoverflow

时间:2024-04-15 16:45:19 469浏览 收藏

golang学习网今天将给大家带来《我怎样才能在一段时间后获得输入而不按golang中的任何键》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我有一个正在运行的应用程序,5 秒后,我想获取用户编写的所有文本,而无需按 Enter 等任何键。在 Go 语言中


解决方案


这里有一个函数readinput,它使用time.timer来等待用户输入的一定时间

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"
    "time"

    "golang.org/x/crypto/ssh/terminal"
)

func readInput() string{

    state, err := terminal.MakeRaw(0)
    if err != nil {
        log.Fatalln("setting stdin to raw:", err)
    }
    defer func() {
        if err := terminal.Restore(0, state); err != nil {
            log.Println("warning, failed to restore terminal:", err)
        }
    }()

    timer := time.NewTimer(2 * time.Second)
    in := bufio.NewReader(os.Stdin)
    input := []rune{}
    go func() {
        for {
            
            r, _, err := in.ReadRune()
            if err != nil {
                log.Println("stdin:", err)
                break
            }
            input = append(input, r)
        }
    }()
    <- timer.C
    return string(input);
}

func main() {
    s:= readInput()
    fmt.Println(s)
}

好了,本文到此结束,带大家了解了《我怎样才能在一段时间后获得输入而不按golang中的任何键》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>