我无法用 tview 更新文本

I cannot update text with tview

我在 Go 语言中使用 tview

我想用下面的代码在终端上显示“hoge”,但是没有显示。

package main

import (
    "fmt"

    "github.com/rivo/tview"
)

func main() {
    tui := newTui()
    tui.Run()
    tui.WriteMessage("hoge")
}

type Tui struct {
    app  *tview.Application
    text *tview.TextView
}

func (t *Tui) Run() {
    t.app.Run()
}

func (t *Tui) WriteMessage(message string) {
    fmt.Fprintln(t.text, message)
}

func newTui() *Tui {
    text := tview.NewTextView()

    app := tview.NewApplication()
    app.SetRoot(text, true)

    text.SetChangedFunc(func() { app.Draw() })

    tui := &Tui{app: app, text: text}

    return tui
}

我不想更新 newTui() 函数中的文本。

如何让它显示出来?

func (*Application) Run():

Run starts the application and thus the event loop. This function returns when Stop() was called.

即程序中的语句 tui.WriteMessage("hoge") 永远不会到达,因为 Run() 不会 return 直到明确停止。因此要在终端中看到 hoge 打印,您必须在 Run().

之前调用 tui.WriteMessage("hoge")
func main() {
    tui := newTui()
    tui.WriteMessage("hoge")
    tui.Run()
}