sqweek/dialog 是一个 Go 语言库,用于创建用户友好的命令行界面应用程序。它提供了一组用于创建对话框、提示、菜单和其他交互元素的函数。dialog 的设计旨在易于使用,同时仍然强大且可定制。
安装
要安装 sqweek/dialog,请运行以下命令:
go get github.com/sqweek/dialog
使用
dialog 的使用非常简单。要创建一个对话框,只需调用 dialog.Message()
函数,并传入要显示的消息和标题。例如,以下代码创建一个确认对话框,询问用户是否要继续:
ok := dialog.Message("%s", "Do you want to continue?").Title("Are you sure?").YesNo()
dialog 还提供了一组用于创建文件选择器、目录浏览器和菜单的函数。例如,以下代码创建一个文件选择器,允许用户选择一个 MP3 音频文件:
filename, err := dialog.File().Filter("Mp3 audio file", "mp3").Load()
以下代码创建一个目录浏览器,允许用户选择一个目录:
directory, err := dialog.Directory().Title("Load images").Browse()
应用
我们可以用它来优化之前编写的 PDF 文档阅读器:
func main() {
filename, err := dialog.File().Filter("pdf document", "pdf").Load()
if err == dialog.Cancelled {
return
}
if err != nil {
log.Fatal(err)
}
doc, err = fitz.New(filename)
if err != nil {
log.Fatal(err)
}
先前我们使用 flag 工具获取命令行输入参数来指定打开某个文件,现在我们使用 dialog 通过可视化方法来选择某个文件进行打开。