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型から構成される文字列が出力されました。