Создатель этого API (https://github.com/gdamore/tcell.git) предоставил решение. Вот его ответ:
Есть три потенциальных проблемы.
Во-первых, вам нужно инициализировать экранВызовите scn.Init () после создания экрана.
Во-вторых, ваш вызов SetContent ошибочен. Строка, которую вы передаете, предназначена для объединения символов. Вместо этого вам нужно вызвать SetContent 5 раз (одиндля каждой буквы «hello») с различным смещением и соответствующей буквой «hello». Возможно, вы захотите просто передать «» для 4-го аргумента (строки), поскольку ни один из них не объединяет символы ..
Третья проблема заключается в том, что ваша программа просто завершается. На большинстве терминалов это приведет к сбросу терминала, что приведет к потере выходных данных. (Например, на xterm tcell по умолчанию использует альтернативный экранный буфер, что приводит квыйти, вызывая потерю содержимого этого экрана, когда он возвращается к основному экранному буферу при завершении программы.Самый простой способ доказать это - добавить time.Sleep (time.Second * 10) или аналогичный последней строке вашей программы.
Вот модифицированный код:
import (
"fmt"
"github.com/gdamore/tcell"
"github.com/gdamore/tcell/encoding"
"os"
"time"
)
func main() {
encoding.Register()
scn, err := tcell.NewScreen()
scn.Init()
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
scn.Clear()
scn.SetContent(10, 10, rune('h'), []rune(""), tcell.StyleDefault)
scn.Show()
time.Sleep(time.Second * 2)
}
Надеюсь, что это поможет.