相关疑难解决方法(0)

如何从控制台线读取输入?

我想从命令行读取输入,但是在我被提示输入之前,我的尝试已经结束,程序退出.我在C#中寻找相当于Console.ReadLine()的东西.

这就是我目前拥有的:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter text: ")
    text, _ := reader.ReadString('\n')
    fmt.Println(text)

    fmt.Println("Enter text: ")
    text2 := ""
    fmt.Scanln(text2)
    fmt.Println(text2)

    ln := ""
    fmt.Sscanln("%v", ln)
    fmt.Println(ln)
}
Run Code Online (Sandbox Code Playgroud)

go

251
推荐指数
10
解决办法
25万
查看次数

从标准输入读取整数

如何使用fmt.ScanfGo中的函数从标准输入获取整数输入?

如果无法使用fmt.Scanf,那么读取单个整数的最佳方法是什么?

stdin go

80
推荐指数
4
解决办法
8万
查看次数

确定Stdin是否包含Go数据

有没有办法检查输入流(os.Stdin)是否有数据?

从GO的初始stdin读取帖子显示了如何读取数据,但不幸的是,如果没有数据通过管道输入stdin,则会阻塞.

stdin pipe go

7
推荐指数
2
解决办法
1506
查看次数

如何在Golang循环中捕获按键而不输入

我有一个循环,其中一些事情根据它运行的状态(手动/自动/学习)发生。我现在希望能够通过按键盘上的附带字母(“m”表示手动,“a”表示自动,“l”表示学习)来让程序在这些状态之间切换。

因此,要做到这一点,我需要能够在循环期间捕获按键并相应地更改变量状态。我现在有以下内容,它可以捕获按键然后输入:

ch := make(chan string)
go func(ch chan string) {
    reader := bufio.NewReader(os.Stdin)
    for {
        s, _ := reader.ReadString('\n')
        ch <- s
    }
}(ch)

for {
    select {
        case stdin, _ := <-ch:
            fmt.Println("Keys pressed:", stdin)
        default:
            fmt.Println("Working..")
    }
    time.Sleep(time.Second)
}
Run Code Online (Sandbox Code Playgroud)

但我需要按下回车按钮这一事实是不可接受的。

有谁知道一种非阻塞的方法来捕获普通字母(不是 SIGINT)的按键,而无需事后按 Enter 键?

concurrency stdin keypress nonblocking go

5
推荐指数
1
解决办法
5691
查看次数

标签 统计

go ×4

stdin ×3

concurrency ×1

keypress ×1

nonblocking ×1

pipe ×1