首页 > 后端开发 > Golang > 如何在 Go 中实现 C 的 getchar() 功能用于单字符输入(包括 Tab)?

如何在 Go 中实现 C 的 getchar() 功能用于单字符输入(包括 Tab)?

Patricia Arquette
发布: 2024-12-30 16:01:13
原创
356 人浏览过

How to Implement C's `getchar()` Functionality for Single Character Input, Including Tab, in Go?

获取字符输入类似于 Go 中 C 的 getchar()

C 的 getchar() 函数允许用户从控制台输入单个字符。然而,在 Go 中,没有直接等效的方法来处理 Tab 键按下。在开发具有自动完成功能的控制台应用程序时,这可能具有挑战性。

Go 等效

Go 中的一个可能的替代方案是使用 bufio.Reader。下面是一个示例:

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]))
}
登录后复制

虽然 bufio.Reader 可以读取单个字符,但它需要用户按 Enter 键才能输入该字符。对于检测 Tab 键按下,这是不合适的。

其他注意事项

对于此特定需求,C 的 getchar() 不合适,因为它等待用户按 Enter 键。相反,替代选项包括:

  • 使用 ncurses/readline 绑定(例如 goncurses)
  • 开发自己的输入处理程序
  • 执行外部命令(例如 stty)使用os.Exec

参考文献:

  • [Google 网上论坛讨论getchar()](https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/zhBE5MH4n-Q)
  • [使用 bufio.Reader](https://groups .google.com/forum/?fromgroups=#!topic/golang-nuts/S9AO_kHktiY)
  • [ReadLine包](https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/icMfYF8wJCk)

以上是如何在 Go 中实现 C 的 getchar() 功能用于单字符输入(包括 Tab)?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板