ホームページ  >  記事  >  バックエンド開発  >  Golang でキーボード入力と出力を使用する方法

Golang でキーボード入力と出力を使用する方法

PHPz
PHPzオリジナル
2023-04-11 09:14:012125ブラウズ

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 つのライブラリを示します。

  1. termui
    termui は、Golang アプリケーションをよりメジャーに見せることができる多くの便利な UI コンポーネントを提供するターミナル ベースのユーザー インターフェイス ライブラリです。以下は、termui を使用して実装された簡単な例です。
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 を使用してユーザー入力を取得します。

  1. gocui
    gocui は、ターミナル GUI を作成するためのもう 1 つのライブラリです。ウィンドウ、入力ボックス、ボタンなどのいくつかの一般的な GUI コンポーネントを提供します。以下は、gocui を使用して実装された簡単な例です:
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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。