首页 >后端开发 >Golang >如何实现相当于 C 的 getchar() 的 Go 函数?

如何实现相当于 C 的 getchar() 的 Go 函数?

Susan Sarandon
Susan Sarandon原创
2024-12-18 17:34:11841浏览

How to Implement a Go Function Equivalent to C's `getchar()`?

Go 函数,相当于 C 的 getchar

getchar(),C 中的一个函数,允许用户从控制台读取单个字符。此功能对于控制台完成等应用程序来说是理想的。在 Go 中,可以使用 bufio 包实现类似的功能。

Go getchar() 实现

package main

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

func main() {
    reader := bufio.NewReader(os.Stdin)
    input, _ := reader.ReadString('\n')
    fmt.Printf("Input Character: %v", string([]byte(input)[0]))
}

getchar() 的局限性

但是,在 tab 补全的情况下,getchar() 可能不是一个理想的解决方案。与需要按 Enter 来捕获输入的 getchar() 不同,ncurses 的 getch()、readline 或 jLine 等函数旨在捕获单个击键,而无需按 Enter。

替代方案getchar() 用于制表符补全

对于制表符补全,请考虑以下替代方案解决方案:

  • 使用 ncurses/readline 绑定: 例如,像 https://code.google.com/p/goncurses/ 这样的库提供 ncurses 绑定。
  • 实施您自己的解决方案:利用诸如https://play.golang.org/p/plwBIIYiqG 作为起点。
  • 调用外部命令: 使用 stty 或 jLine 执行命令os.Exec.

参考文献:

  • https://groups.google.com/forum/?fromgroups=#!topic/golang -nuts/zhBE5MH4n-Q
  • https://groups.goog le.com/forum/?fromgroups=#!topic/golang-nuts/S9AO_kHktiY
  • https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/icMfYF8wJCk

以上是如何实现相当于 C 的 getchar() 的 Go 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn