go之bubbletea可视化操作

2023-11-28 21:20
文章标签 go 操作 可视化 bubbletea

本文主要是介绍go之bubbletea可视化操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一 简介

bubbletea是一个简单、小巧、可以非常方便地用来编写 TUI(terminal User Interface,控制台界面程序)程序的框架。内置简单的事件处理机制,可以对外部事件做出响应,如键盘按键。

二 快速使用

bubbletea程序都需要有一个实现bubbletea.Model接口的类型:

type Model interface {
//	Init is the first function that will be called. It returns an optional
//	initial command. To not perform an initial command return nil.
//Init 是第一个被调用的函数。它返回一个可选的
//初始命令。不执行初始命令返回 nil。Init() Cmd//Update is called when a message is received. Use it to inspect messages//and, in response, update the model and/or send a command.
//收到消息时调用更新。用它来检查消息
//并且,作为响应,更新模型和/或发送命令。Update(Msg) (Model, Cmd)//	View renders the program's UI, which is just a string. The view is
//	rendered after every Update.
//View 渲染程序的 UI,它只是一个字符串。观点是
//每次更新后渲染。View() string
}

Init()方法在程序启动时会立刻调用,它会做一些初始化工作,并返回一个Cmd告诉bubbletea要执行什么命令;
Update()方法用来响应外部事件,返回一个修改后的模型,和想要bubbletea执行的命令;
View()方法用于返回在控制台上显示的文本字符串。

package mainimport ("fmt"tea "github.com/charmbracelet/bubbletea""os"
)
//需要实现init update view三个方法
type model struct {items    []stringindex   int}func (m model) Init() tea.Cmd {return nil
}func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {switch msg := msg.(type) {case tea.KeyMsg:switch msg.String() {//当输入q或者ctrl+c 退出case "ctrl+c", "q":return m, tea.Quit// 如果是up 光标向上移动case "up":if m.index > 0 {m.index--}//如果是down 光标向下移动case "down":if m.index < len(m.items)-1 {m.index++}//如果是enter 处理事件case "enter":fmt.Println(m.items[m.index])return m,tea.Quit}}return m, nil
}
//渲染列表
func (m model) View() string {s := "欢迎来到k8s可视化系统\n\n"for i, item := range m.items {selected := " "if m.index == i {selected = "»"}s += fmt.Sprintf("%s %s\n", selected, item)}s += "\n按Q退出\n"return s
}
func main() {var initModel = model{items:    []string{"我要看POD", "给我列出deployment", "我想看configmap"},}cmd := tea.NewProgram(initModel)if err := cmd.Start(); err != nil {fmt.Println("start failed:", err)os.Exit(1)}
}

ctrl+cq:退出程序;
upk:向上移动光标;
downj:向下移动光标;
enter:切换光标处事项的完成状态。
处理ctrl+cq按键时,返回一个特殊的tea.Quit,通知bubbletea需要退出程序。
在这里插入图片描述

这篇关于go之bubbletea可视化操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/430281

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3