文章目录

  • 简介
  • 一、内置的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相关推荐

  1. 「GoCN酷Go推荐」交互式命令行工具库survey

    ☆ 什么是 survey? ☆ survey 可以让你方便的在终端上构建交互式和可访问提示的应用,支持ANSI ☆ 安装 ☆ go get github.com/AlecAivazis/survey/ ...

  2. Node交互式命令行工具开发——自动化文档工具

    转载自:小磊 https://segmentfault.com/a/1190000039749423 nodejs开发命令行工具,流程相对简单,但一套完整的命令行程序开发流程下来,还是需要下点功夫,网 ...

  3. nodejs shell交互_NodeJs交互式命令行工具Inquirer.js-开箱指南

    Inquirer.js试图为NodeJs做一个可嵌入式的美观的命令行界面.如下图: 它是非常容易去处理以下几种事情的: 提供错误回调 询问操作者问题 获取并解析用户输入 检测用户回答是否合法 管理多层 ...

  4. shell打开wifi命令_MacWiFi:一款管理Mac系统WIFI的命令行工具(包含交互式Shell)...

    今天给大家介绍的是一款名叫mac-wifi的命令行工具,它可以管理macOS系统的无线网络,并且还提供了交互式Shell. mac-wifi mac-wifi脚本可以查询或管理macOS平台上的WiF ...

  5. 一天1300 Star量,GitHub上新官方命令行工具

    机器之心 机器之心编辑部 不想用命令行操作 GitHub 的开发者,不是好的开发者. Git简介 小编私以为,Git 是世界上最好的代码版本控制工具,木有之一.在做项目的时候,通常我们会在本地写代码, ...

  6. 实用!五款新型 Linux 命令行工具

    使用新的替代工具来改进旧的命令行工具. 作者 | Ricardo Gerardi 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 在Linux/Unix系统 ...

  7. 监控 Linux 性能的 18 个命令行工具

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...

  8. 20个命令行工具监控 Linux 系统性能(转载)

    1. top - Linux 系统进程监控 top 命令是性能监控程序,它可以在很多 Linux/Unix 版本下使用,并且它也是 Linux 系统管理员经常使用的监控系统性能的工具.Top 命令可以 ...

  9. [MySQL]命令行工具和基本操作

    [MySQL]命令行工具和基本操作 一 MySQL命令行工具  (查看帮助 ---help,或 -?) 1)MySQL MySQL是一个简单的SQL外壳(有GNU readline功能).它支持交互式 ...

最新文章

  1. Stream Processing: Apache Kafka的Exactly-once的定义 原理和实现
  2. ESP32-CAM教程一:网页上显示摄像头数据
  3. Cleaver快速制作网页PPT
  4. OpenCV基本mat重建的实例(附完整代码)
  5. docker重启mysql数据丢失_mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发
  6. python核心数据类型_Python核心数据类型——字符串
  7. 做ppt用的小插图_如何用PPT做随机抽奖?
  8. 后台通过request.setAttribute向前台传值,前台如何去获取其中的对象或属性值
  9. 校门外的树(信息学奥赛一本通-T1107)
  10. VMware vSphere、 ESXi、Vcenter、vSphere Client关系
  11. unix到底有啥用_汽车后挡风玻璃上的“横线”到底有啥用?不懂就别说自己会开车了...
  12. LeetCode:交替打印【1115】
  13. 海狮号水下机器人_美军派出动物特种兵搜寻失踪水下机器人
  14. SQLServer删除登录记录用户名和密码
  15. ADB: unknown command ?
  16. linux的if语句并且命令,linux命令:if语句练习
  17. php 随即英文,PHP生成随机英文用户名
  18. 电脑c盘分区太小如何可以扩大,电脑c盘不够用了,如何给电脑分区
  19. mac下面用ffmpeg抓取桌面以及摄像头推流进行直播
  20. The ninth day_打飞机项目

热门文章

  1. linux 内核模块 强制卸载
  2. 华为发布凌霄芯片华为正式发布鸿蒙,凌霄芯片
  3. 拥抱物联网 开启智慧医疗新时代 一文带你了解“2019第四届中国(上海)国际人工智能展览会”
  4. harry - 用类和对象做吃鸡的人物角色
  5. 弘辽科技:直通车和引力魔方组合拳打赢翻身仗
  6. ModSecurity-配置文件
  7. 腾讯云服务器放行端口--配置安全组
  8. 网络爬虫分析实例:基于音悦台网站榜单的数据爬取与分析
  9. macos 是什么键_macOS中的Power Nap是什么?
  10. python图像处理-图片分类项目