GO:交互式命令行工具 survey
文章目录
- 简介
- 一、内置的Validators
- 二、安装
- 三、测试用例
- 四、其他用法
- 小结
简介
survey 可以让你方便的在终端上构建交互式和可访问提示的应用,支持ANSI
一、内置的Validators
- Required 要求必填
- MinLength(n) 输入字符最小长度验证
- MaxLength(n) 输入字符最大长度验证
- MaxItems(n) 选项最多验证
- MinItems(n) 选项最小验证
二、安装
go get github.com/AlecAivazis/survey/v2
三、测试用例
代码模块:
package mainimport ("fmt""github.com/AlecAivazis/survey/v2"
)// the questions to ask
var qs = []*survey.Question{{Name: "name",Prompt: &survey.Input{Message: "What is your name?"},Validate: survey.Required,Transform: survey.Title,},{Name: "color",Prompt: &survey.Select{Message: "Choose a color:",Options: []string{"red", "blue", "green"},Default: "red",},},{Name: "age",Prompt: &survey.Input{Message: "How old are you?"},},
}func main() {// 结果写入到结构体answers := struct {Name string // survey 会默认匹配首字母小写的nameFavoriteColor string `survey:"color"` // 或者你也可以用tag指定如何匹配Age int // 如果类型不一致,survey会尝试转换}{}// 执行提问err := survey.Ask(qs, &answers)if err != nil {fmt.Println(err.Error())return}fmt.Printf("%s chose %s.", answers.Name, answers.FavoriteColor)
}
运行结果:
四、其他用法
** 文本输入**
name := ""
prompt := &survey.Input{Message: "ping",
}
survey.AskOne(prompt, &name)
** 多行输入**
text := ""
prompt := &survey.Multiline{Message: "ping",
}
survey.AskOne(prompt, &text)
** 密码输入**
password := ""
prompt := &survey.Password{Message: "Please type your password",
}
survey.AskOne(prompt, &password)
** 确认**
name := false
prompt := &survey.Confirm{Message: "Do you like pie?",
}
survey.AskOne(prompt, &name)
** 单选**
color := ""
prompt := &survey.Select{Message: "Choose a color:",Options: []string{"red", "blue", "green"},
}
survey.AskOne(prompt, &color)
** 多选**
days := []string{}
prompt := &survey.MultiSelect{Message: "What days do you prefer:",Options: []string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"},
}
survey.AskOne(prompt, &days)
** 验证**
q := &survey.Question{Prompt: &survey.Input{Message: "Hello world validation"},Validate: func (val interface{}) error {// 自定义验证if str, ok := val.(string) ; !ok || len(str) > 10 {return errors.New("This response cannot be longer than 10 characters.")}return nil},
}color := ""
prompt := &survey.Input{ Message: "Whats your name?" }survey.AskOne(prompt, &color, survey.WithValidator(survey.Required))
小结
survey可以帮助我们快速开发出交互式命令行应用,使用简单,功能强大,文档齐全,欢迎使用
github地址:https://github.com/AlecAivazis/survey
GO:交互式命令行工具 survey相关推荐
- 「GoCN酷Go推荐」交互式命令行工具库survey
☆ 什么是 survey? ☆ survey 可以让你方便的在终端上构建交互式和可访问提示的应用,支持ANSI ☆ 安装 ☆ go get github.com/AlecAivazis/survey/ ...
- Node交互式命令行工具开发——自动化文档工具
转载自:小磊 https://segmentfault.com/a/1190000039749423 nodejs开发命令行工具,流程相对简单,但一套完整的命令行程序开发流程下来,还是需要下点功夫,网 ...
- nodejs shell交互_NodeJs交互式命令行工具Inquirer.js-开箱指南
Inquirer.js试图为NodeJs做一个可嵌入式的美观的命令行界面.如下图: 它是非常容易去处理以下几种事情的: 提供错误回调 询问操作者问题 获取并解析用户输入 检测用户回答是否合法 管理多层 ...
- shell打开wifi命令_MacWiFi:一款管理Mac系统WIFI的命令行工具(包含交互式Shell)...
今天给大家介绍的是一款名叫mac-wifi的命令行工具,它可以管理macOS系统的无线网络,并且还提供了交互式Shell. mac-wifi mac-wifi脚本可以查询或管理macOS平台上的WiF ...
- 一天1300 Star量,GitHub上新官方命令行工具
机器之心 机器之心编辑部 不想用命令行操作 GitHub 的开发者,不是好的开发者. Git简介 小编私以为,Git 是世界上最好的代码版本控制工具,木有之一.在做项目的时候,通常我们会在本地写代码, ...
- 实用!五款新型 Linux 命令行工具
使用新的替代工具来改进旧的命令行工具. 作者 | Ricardo Gerardi 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 在Linux/Unix系统 ...
- 监控 Linux 性能的 18 个命令行工具
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...
- 20个命令行工具监控 Linux 系统性能(转载)
1. top - Linux 系统进程监控 top 命令是性能监控程序,它可以在很多 Linux/Unix 版本下使用,并且它也是 Linux 系统管理员经常使用的监控系统性能的工具.Top 命令可以 ...
- [MySQL]命令行工具和基本操作
[MySQL]命令行工具和基本操作 一 MySQL命令行工具 (查看帮助 ---help,或 -?) 1)MySQL MySQL是一个简单的SQL外壳(有GNU readline功能).它支持交互式 ...
最新文章
- Stream Processing: Apache Kafka的Exactly-once的定义 原理和实现
- ESP32-CAM教程一:网页上显示摄像头数据
- Cleaver快速制作网页PPT
- OpenCV基本mat重建的实例(附完整代码)
- docker重启mysql数据丢失_mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发
- python核心数据类型_Python核心数据类型——字符串
- 做ppt用的小插图_如何用PPT做随机抽奖?
- 后台通过request.setAttribute向前台传值,前台如何去获取其中的对象或属性值
- 校门外的树(信息学奥赛一本通-T1107)
- VMware vSphere、 ESXi、Vcenter、vSphere Client关系
- unix到底有啥用_汽车后挡风玻璃上的“横线”到底有啥用?不懂就别说自己会开车了...
- LeetCode:交替打印【1115】
- 海狮号水下机器人_美军派出动物特种兵搜寻失踪水下机器人
- SQLServer删除登录记录用户名和密码
- ADB: unknown command ?
- linux的if语句并且命令,linux命令:if语句练习
- php 随即英文,PHP生成随机英文用户名
- 电脑c盘分区太小如何可以扩大,电脑c盘不够用了,如何给电脑分区
- mac下面用ffmpeg抓取桌面以及摄像头推流进行直播
- The ninth day_打飞机项目