Golang は、アプリケーション開発時に非常に便利で実用的な効率的な最新言語です。この記事では、Golang でキーボード入力と出力を使用する方法を紹介します。
1. fmt パッケージを使用して出力する
fmt パッケージは、Golang 標準ライブラリで非常に一般的に使用されるパッケージであり、多くの便利な関数を提供します。これには、コンソールへのコンテンツの出力が含まれます。 fmt パッケージを使用して出力するのは非常に簡単で、fmt.Println() 関数を呼び出すだけです。
package main import "fmt" func main() { fmt.Println("Hello, world!") }
このコードを実行すると、コンソールに「Hello, world!」という出力が表示されます。
2. bufio パッケージを入力に使用する
出力に加えて、入力も頻繁に使用する必要がある関数です。 Golang は、ユーザー入力を簡単に読み取ることができる bufio パッケージを提供します。以下は、ユーザー入力と出力を読み取る簡単な例です。
package main import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Enter text: ") text, _ := reader.ReadString('\n') fmt.Println("You entered: ", text) }
このコードでは、最初に bufio パッケージと os パッケージをインポートし、ユーザー入力を読み取るためのリーダー変数を main 関数に作成しました。 fmt.Print() 関数を呼び出してプロンプト情報を出力し、ユーザー入力を待ってから、reader.ReadString() 関数を使用してユーザー入力を読み取ります。最後に、 fmt.Println() 関数を使用して、ユーザーが入力した内容を出力します。
3. サードパーティのライブラリを使用して入出力エクスペリエンスを向上させる
上記の方法は便利ですが、最も基本的な入出力関数のみが実装されています。より良いユーザー エクスペリエンスが必要な場合は、サードパーティ ライブラリの使用を検討できます。以下に、推奨する価値のある 2 つのライブラリを示します。
package main import ( "github.com/gizak/termui/v3" "github.com/gizak/termui/v3/widgets" ) func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() p := widgets.NewParagraph() p.Text = "Enter text here:" p.SetRect(0, 0, 25, 3) tb := widgets.NewTextEdit() tb.SetRect(0, 3, 25, 5) termui.Render(p, tb) for e := range termui.PollEvents() { if e.Type == termui.KeyboardEvent { if e.ID == "q" { return } if e.ID == "<Enter>" { p.Text = "You entered " + tb.Text tb.SetText("") } termui.Render(p, tb) } } }
この例では、termui の widgets.NewParagraph() 関数と widgets.NewTextEdit() 関数を使用して、段落とテキストの編集ボックスを作成します。 Render() 関数は、端末でこれらのコンポーネントをレンダリングするために使用されます。また、PollEvents() 関数を使用してユーザー入力を処理しました。ユーザーが Enter キーを入力すると、p.Text を使用してプロンプト情報を更新し、tb.Text を使用してユーザー入力を取得します。
package main import ( "github.com/jroimartin/gocui" ) func main() { g, err := gocui.NewGui(gocui.OutputNormal) if err != nil { panic(err) } defer g.Close() g.SetManagerFunc(func(g *gocui.Gui) error { if v, err := g.SetView("prompt", 0, 0, 25, 3); err != nil { if err != gocui.ErrUnknownView { return err } v.Title = "Enter text" v.Editable = true v.Wrap = true if _, err := g.Cursor(true); err != nil { return err } if err := g.SetKeybinding("prompt", gocui.KeyEnter, gocui.ModNone, enterHandler); err != nil { return err } if err := v.SetCursor(0, 0); err != nil { return err } } return nil }) if err := g.MainLoop(); err != nil && err != gocui.ErrQuit { panic(err) } } func enterHandler(g *gocui.Gui, v *gocui.View) error { if _, err := g.View("prompt"); err != nil { return err } text := v.Buffer() if err := g.DeleteView("prompt"); err != nil { return err } if _, err := g.SetCurrentView(""); err != nil { return err } g.Update(func(g *gocui.Gui) error { return g.Close() }) println("You entered: ", text) return nil }
この例では、gocui の gocui.NewGui() 関数を使用して GUI オブジェクトを作成し、g.SetManagerFunc() 関数を使用します。編集ボックスとしての GUI インターフェイス。また、g.SetKeybinding() 関数を使用してショートカット キーを設定し、ユーザー入力を処理するために enterHandler() 関数を実装しました。
要約:
Golang ではキーボード入力と出力を使用すると非常に便利です。 Golang 標準ライブラリの fmt および bufio パッケージを使用して、基本的な入出力操作を完了できます。より良いユーザー エクスペリエンスが必要な場合は、サードパーティ ライブラリの termui および gocui を使用してターミナル GUI を作成することもできます。
以上がGolang でキーボード入力と出力を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。