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 会默认匹配首字母小写的name         FavoriteColor 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内置了几种Validators

  • Required 要求必填

  • MinLength(n) 输入字符最小长度验证

  • MaxLength(n) 输入字符最大长度验证

  • MaxItems(n) 选项最多验证

  • MinItems(n) 选项最小验证

☆ 总结

survey可以帮助我们快速开发出交互式命令行应用,使用简单,功能强大,文档齐全,欢迎使用

参考链接

https://github.com/AlecAivazis/survey

《酷Go推荐》招募:

各位Gopher同学,最近我们社区打算推出一个类似GoCN每日新闻的新栏目《酷Go推荐》,主要是每周推荐一个库或者好的项目,然后写一点这个库使用方法或者优点之类的,这样可以真正的帮助到大家能够学习到

新的库,并且知道怎么用。

大概规则和每日新闻类似,如果报名人多的话每个人一个月轮到一次,欢迎大家报名!戳「阅读原文」,即可报名

扫码也可以加入 GoCN 的大家族哟~

☆什么是 survey?☆survey 可以让你方便的在终端上构建交互式和可访问提示的应用,支持ANSI☆ 安装☆gogetgithub.com/AlecAivazis/surv...
在之前爬虫 Go 中国技术社区每日新闻的的加了一个功能,自动归档到github上,方便查阅,每天自动更新。 gocn _news_set_2021 go 中文网每日资讯--2021-04-12 一、 Go 语言中文网 Go 数据结构和算法篇(一):链表 二、亚军进化史 Go 技术日报(2021-04-11)——rpcx支持websocket协议了! 三、CloudNativeCommunity 同程旅 大数据集群在 Kubernetes 上的服务化实践 四、k8s技术圈 Dockerd资源泄露系列 - 内存&FD泄露 - 1 五、MoeLove K8S 生态周报| Kubernetes v1.21 发布, 带来新的内存管理器 六、微服务实践 更简的并发代码,更强的并发控制 七、 Go OfficialBlog 高性能 Go 代码工坊(Part4) 八、分布式实验室 分布式系统在 Kubernetes 上的进
获取 GoCN 新闻 爬取获得 gocn 的新闻,并同步到博客,每日更新从我做起 具体部署方法: ://blog.csdn.net/weixin_44024220/article/details/105960728 参考 : 博客框架:hexo 支持每天定时爬取 自动推到hexo页面上 效果展示: 使用方法: 首先修改update.sh中的路径文件,修改为自己的博客路径 每次检索时间为3小时一次 去建立main. go nohup ./main和 对于html解析时该 无法解析空间, 推荐 使用doc.FindAllStrict此方法
调查用于构建 交互式 提示的 。 受到伟大的quirer.js的极大启发。 包main import(“ fmt”“ go pkg.in/AlecAivazis/ survey .v1”)//要询问的问题var qs = [] * survey .Question {调查一个用于构建 交互式 提示的 。 包main import(“ fmt”“ github.com/AlecAivazis/ survey /v2”)//要询问的问题var qs = [] * survey .Question {{名称:“名称”,提示:& survey .Input {消息: “您叫什么名字?”},验证: Survey .Required,Transform: survey .Title,},{名称:“ color”,提示:& survey .Select {消息:“选择颜色:”,选项:[]字符串{“红蓝”, 步骤1:为调查创建期望。 调用 survey mock.Mock() survey := survey mock . Mock ( func ( s * survey mock. Survey ) { s . ExpectPassword ( "Enter a password:" ). Answer ( "secret" ) })( t ) // t is *testing.T 第2步:运 它。 重要提示:使用stdio arg并将其注入 survey .Prompt否则提示将不起作用。 survey . Sta
cron,是一个Linux定时执 工具 ,可以在无需人工干预的情况下运 作业。 在Ubuntu server 下,cron是被默认安装并启动的;如果没有启动,自 设置并启动(chkconfigsysv-rc-conf)。通过其配置文件 /etc/crontab 可以看到以下内容:ununtu 通过调用 run-parts 命令 ,定时运 四个目录下的所有脚本。 1)/etc/cron.hourly,目录下的脚本会每个小时让执 一次,在每小时的17分钟时运 ; 2)/etc/cron.daily,目录下的脚本会每
1. Go 语言中文网:https://study go lang.com/ 2. Go lang中国:https://www. go langtc.com/ 3. Go 社区:https:// gocn .vip/ 4. Go 大本营:https://www. go lang123.com/ 5. Go 语言中文论坛:https:// go langtc.com/forum/ 这些网站都提供了丰富的 Go lang学习资源,包括教程、文档、实战案例、社区论坛等。您可以根据自己的需求选择合适的网站进 学习和交流。同时,还有很多国外的 Go lang学习资源也值得关注,例如官方文档、GitHub上的开源项目等。