首頁 > 後端開發 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板