有没有类似于getchar的功能能够在控制台中处理标签按钮?我想在我的控制台应用程序中做一些完成。 C的getchar()示例:

#include <stdio.h>
void main()
{
    char ch;
    ch = getchar();
    printf("Input Char Is :%c",ch);
}

相当于:

package main

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

func main() {

    reader := bufio.NewReader(os.Stdin)
    input,_ := reader.ReadString('\n')

    fmt.Printf("Input Char Is : %v",string([]byte(input)[0]))

    // fmt.Printf("You entered: %v",[]byte(input))
}

最后一个注释行只显示当您按Tab时第一个元素是U 0009(‘CHARACTER TABULATION’)。

但是对于您的需要(检测选项卡)C的getchar()不适合,因为它需要用户按Enter键。你需要的是像@miku所提到的ncurses的getch()/ readline / jLine。有了这些,您实际上等待单次击键。

所以你有多个选择:

>使用ncurses / readline绑定,例如https://code.google.com/p/goncurses/或等同于https://github.com/nsf/termbox
>自己看看http://play.golang.org/p/plwBIIYiqG起点
>使用os.Exec来运行stty或jLine。

参考: