1. 终端应用程序的运行过程
p := goterm.New(
executor,
completer,
goterm.OptionPrefix(currentDir+">>> "),
goterm.OptionLivePrefix(changeLivePrefix),
goterm.OptionTitle("my terminal"),
)
根据上篇文章介绍,我们知道goterm.New就是实例化一个终端应用程序。那么executor作为对象或者函数传入。这里面就是具体的命令行的解析和执行。
2. 什么时候执行 executor
executor 函数在用户输入命令并按下回车键时执行。具体来说,它是在终端应用程序的主循环中调用的。以下是一个典型的终端应用程序主循环示例:
func main() {
currentDir, _ := os.Getwd()
changeLivePrefix := func() (string, bool) {
return currentDir + ">>> ", true
}
p := goterm.New(
executor, // 这里传递了 executor 函数
completer,
goterm.OptionPrefix(currentDir+">>> "),
goterm.OptionLivePrefix(changeLivePrefix),
goterm.OptionTitle("NUWA TERMINAL"),
)
p.Run() // 运行终端应用程序
}
在这个示例中,goterm.New 函数创建了一个新的终端应用程序实例,并将 executor 函数作为参数传递。p.Run() 方法启动终端应用程序的主循环,等待用户输入。当用户输入命令并按下回车键时,终端应用程序会调用 executor 函数来处理输入的命令。
3. executor 函数的作用
executor中就是你执行命令要进行的各种处理。例如:
- 命令解析:当你输入命令的时候,根据你输入的命令执行相应的操作
可以实现相应的交互功能。
4. 总结
executor 函数在用户输入命令并按下回车键时执行。它负责处理用户输入的命令,包括日志记录、模式切换、退出命令等。终端应用程序的主循环通过调用 executor 函数来处理用户输入。