###前提・実現したいこと
golangでコマンドラインツールを作成していますが、
そのツールの機能として入力補完機能を実現したいと思っています。
(入力補完機能とはタブキーを押下するたびに前方一致で該当するキーワードを自動表示するもののこと)
具体的には、標準入力(os.Stdin)で、タブキー押下時までに入力した文字列を取得したいのですが、
Enterキー押下した後でないと入力文字列を取得できない状態です。
###該当のソースコード
golang
1// bufio.NewScanner を使ったバージョン 2func main() { 3 stdin := bufio.NewScanner(os.Stdin) 4 for stdin.Scan() { // Enterキー押下しないと発動しない 5 if text := stdin.Text(); text != "" { 6 fmt.Fprint(os.Stdout, text+"\n") 7 } 8 } 9} 10 11// bufio.NewReader を使ったバージョン 12func main() { 13 delim := []byte("\t") 14 stdin := bufio.NewReader(os.Stdin) 15 for { 16 if bs, err := stdin.ReadBytes(delim[0]); err == nil { 17 // Enterキー押下しないと読み込めない 18 fmt.Fprint(os.Stdout, string(bs)+"\n") 19 } else { 20 println(fmt.Sprintf("err:%+v", err)) 21 } 22 } 23} 24
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/07 11:38