前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO:交互式命令行工具 survey

GO:交互式命令行工具 survey

作者头像
Freedom123
发布2024-03-29 14:05:04
790
发布2024-03-29 14:05:04
举报
文章被收录于专栏:DevOpsDevOps

简介

survey 可以让你方便的在终端上构建交互式和可访问提示的应用,支持ANSI

一、内置的Validators

  • Required 要求必填
  • MinLength(n) 输入字符最小长度验证
  • MaxLength(n) 输入字符最大长度验证
  • MaxItems(n) 选项最多验证
  • MinItems(n) 选项最小验证

二、安装

代码语言:javascript
复制
go get github.com/AlecAivazis/survey/v2

三、测试用例

代码模块:

代码语言:javascript
复制
package main
 
import (
    "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 会默认匹配首字母小写的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)
}

运行结果:

四、其他用法

** 文本输入**

代码语言:javascript
复制
name := ""
prompt := &survey.Input{
    Message: "ping",
}
survey.AskOne(prompt, &name)

** 多行输入**

代码语言:javascript
复制
text := ""
prompt := &survey.Multiline{
    Message: "ping",
}
survey.AskOne(prompt, &text)

** 密码输入**

代码语言:javascript
复制
password := ""
prompt := &survey.Password{
    Message: "Please type your password",
}
survey.AskOne(prompt, &password)

** 确认**

代码语言:javascript
复制
name := false
prompt := &survey.Confirm{
    Message: "Do you like pie?",
}
survey.AskOne(prompt, &name)

** 单选**

代码语言:javascript
复制
color := ""
prompt := &survey.Select{
    Message: "Choose a color:",
    Options: []string{"red", "blue", "green"},
}
survey.AskOne(prompt, &color)

** 多选**

代码语言:javascript
复制
days := []string{}
prompt := &survey.MultiSelect{
    Message: "What days do you prefer:",
    Options: []string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"},
}
survey.AskOne(prompt, &days)

** 验证**

代码语言:javascript
复制
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

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 一、内置的Validators
  • 二、安装
  • 三、测试用例
  • 四、其他用法
  • 小结
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com