<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          「GoCN酷Go推薦」交互式命令行工具庫survey

          共 5643字,需瀏覽 12分鐘

           ·

          2021-10-02 03:06


          ☆ 什么是 survey? ☆

          survey 可以讓你方便的在終端上構(gòu)建交互式和可訪問提示的應(yīng)用,支持ANSI

          ☆ 安裝 ☆

          go get github.com/AlecAivazis/survey/v2

          ☆ 快速開始

          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() {
              // 結(jié)果寫入到結(jié)構(gòu)體
              answers := struct {
                  Name          string                  // survey 會默認(rèn)匹配首字母小寫的name
                  FavoriteColor string `survey:"color"` // 或者你也可以用tag指定如何匹配
                  Age           int                     // 如果類型不一致,survey會嘗試轉(zhuǎn)換
              }{}

              // 執(zhí)行提問
              err := survey.Ask(qs, &answers)
              if err != nil {
                  fmt.Println(err.Error())
                  return
              }

              fmt.Printf("%s chose %s.", answers.Name, answers.FavoriteColor)
          }


          IMG1

          ☆ 文本輸入

          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)

          ☆ 確認(rèn)

          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)

          ☆ 驗(yàn)證 

          q := &survey.Question{
              Prompt: &survey.Input{Message: "Hello world validation"},
              Validate: func (val interface{}) error {
                  // 自定義驗(yàn)證
                  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內(nèi)置了幾種Validators

          • Required 要求必填
          • MinLength(n) 輸入字符最小長度驗(yàn)證
          • MaxLength(n) 輸入字符最大長度驗(yàn)證
          • MaxItems(n) 選項(xiàng)最多驗(yàn)證
          • MinItems(n) 選項(xiàng)最小驗(yàn)證

          ☆ 總結(jié) 

          survey可以幫助我們快速開發(fā)出交互式命令行應(yīng)用,使用簡單,功能強(qiáng)大,文檔齊全,歡迎使用

          ☆ 參考鏈接

          https://github.com/AlecAivazis/survey

          《酷Go推薦》招募:


          各位Gopher同學(xué),最近我們社區(qū)打算推出一個類似GoCN每日新聞的新欄目《酷Go推薦》,主要是每周推薦一個庫或者好的項(xiàng)目,然后寫一點(diǎn)這個庫使用方法或者優(yōu)點(diǎn)之類的,這樣可以真正的幫助到大家能夠?qū)W習(xí)到

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


          大概規(guī)則和每日新聞類似,如果報名人多的話每個人一個月輪到一次,歡迎大家報名!戳「閱讀原文」,即可報名


          掃碼也可以加入 GoCN 的大家族喲~



          瀏覽 103
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产福利视频在线播放 | 色婷婷在线免费观看 | 18禁成人h网站 | 日本九九热 | 亚洲AV人人澡人人爽人人乐 |