Trendingを眺めて、面白そうなリポジトリがあったらガンガン試していきます。Trendingとは、盛り上がってるリポジトリを探すことが出来るというGithubが提供するサービスです。以下の2つの構造体を使って作っていきます。box.goボックスはウィジェットを水平または垂直に配置するためのレイアウトです。水平にすると、すべてのウィジェットは同じ高さになります。縦にすると、すべて同じ幅になります。Alignment}entry.goエントリは、1行のテキストエディタです。これによってユーザはアプリケーションにテキストを供給することができます。ユーザおよびパスワード情報を入力することができます。tui.NewSpacer(),)sidebar.SetBorder(true)NewVBox関数で、縦方向のBoxを作成できます。任意数のWidgetを与えることが出来ます。SetBorderメソッドで枠を表示するかを決めます。))}NewVBox関数で縦方向のBoxを作成し、Appendメソッドでメッセージを追加していきます。Appendメソッドの実装を覗いてみましょう。w)}Appendメソッドは、Widgetインターフェイスの値をBoxのchildrenというスライスに追加していきます。tui.Maximum)Entry構造体を作ってNewHBoxの引数に渡すことで、Entry構造体を子要素として持ったBoxを作ることが出来ます。NewHBoxメソッドの実装を覗いてみましょう。}}NewHBox関数はWidgetインターフェイスを子要素に含めることが出来ます。そのためBox構造体だけではなく、Widgetインターフェイスが実装されているEntry構造体も渡すことができます。input.SetText("")})Entry構造体のOnSubmitメソッドで、Enterを押した時の挙動を設定出来ます。historyにメッセージを追加します。flagパッケージを使用して、実行時にユーザー名を指定出来るようにします。})Boxの、Widgetインターフェイスを子要素に出来る機能を利用して、今まで作成したBoxをrootにまとめていきます。tcellUI構造体を作成し、Esc押下時にuiを終了するよう、キーバインディングを設定します。panic(err)}Runメソッドを覗いてみましょう。}}別ゴルーチンを立ててPollEventメソッドを呼ぶことで、イベント発生を監視します。イベントを検知したら、eventQueueというチャネルにenqueueしていきます。eventQueueの状態をメインゴルーチンで監視し、受信を確認したら実行します。*PollEventはgdamore/tcellという別パッケージのメソッドです。長くなるのでGIstに記載しました。https://gist.github.com/ryonakao/6247637a39f32ba0543f5b0421297357まとめ評価されてるライブラリを試すことで以下のメリットがあることに気づきました。コードを多読することになるため、コーディングスキルがUP(今回は、marcusolssonさんのinterface設計がとても勉強になりました。(2)月別アーカイブはてなブログをはじめよう!NakaWatchさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。