tcellで何らかのアプリケーションを開発する際に
func (b *baseScreen) SetContent(x, y int, mainc rune, combc []rune, st Style)
https://github.com/gdamore/tcell/blob/main/screen.go#L404
のメソッドが重要になります。
今回はSetContentの引数の内、combc []runeについて見ていきます。
細かい説明の前にcombcに値を挿入して、実行結果を見てみます。
package main import ( "github.com/gdamore/tcell/v2" ) func main() { screen, err := tcell.NewScreen() if err != nil { panic(err) } if err := screen.Init(); err != nil { panic(err) } defer screen.Fini() runes := []rune{'a', 'b', 'c'} // maincには何らかのrune(一文字の文字)の値を指定する必要があるため、スペースを入れておく screen.SetContent(0, 0, ' ', runes, tcell.StyleDefault) screen.Show() // Escでプログラムを終了できるようにする for { ev := screen.PollEvent() // イベントを取得する switch ev := ev.(type) { case *tcell.EventKey: switch ev.Key() { // 何のキーが押されたか?を調べる case tcell.KeyEscape: // ESCキーが押されたら終了する return } default: // } } }
combcにはruneのスライスを指定する必要があるため、
runes := []rune{'a', 'b', 'c'}
の値を挿入します。
このコードを実行してみると、
スペースが一つあり、その後に指定した abc が出力されました。
更に挙動を確認するために、
screen.SetContent(0, 0, ' ', runes, tcell.StyleDefault)
を
screen.SetContent(0, 0, 'z', runes, tcell.StyleDefault)
のように mainc にrune型の z の値を挿入してみます。
実行結果は
のように、mainc + combc のrune型から構成される文字列が出力されました。