Surveys no Golang e como usar
Olá pessoal, tudo bem? Eu sou Henrique e vou apresentar-lhes o package Survey
Features e Exemplos
Irei usar os exemplos da própia página do AlecAivazis pois não posso testar exemplos própios
Esse package permite você criar varios tipos de questões. Vamos conferir!
Grupos de questões
Esse package permite você agrupar varias questões em um grupo e fazelas em sequência sem precisar de chamar varias vezes o survey.AskOne
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() {
// the answers will be written to this struct
answers := struct {
Name string // survey will match the question and field names
FavoriteColor string `survey:"color"` // or you can tag fields to match a specific name
Age int // if the types don't match, survey will convert it
}{}
// perform the questions
err := survey.Ask(qs, &answers)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Printf("%s chose %s.", answers.Name, answers.FavoriteColor)
}
Diversos tipos de questão
Vocês pode usar e abusar de vários tipos de questão para melhorar a experiência!
✠Input
O Input é uma questão simples que usa string como valor de retorno.
name := ""
prompt := &survey.Input{
Message: "ping",
}
survey.AskOne(prompt, &name)
✠Multiline
O Multiline é uma questão de multiplas linhas e tambem usa string como valor de retorno
text := ""
prompt := &survey.Multiline{
Message: "ping",
}
survey.AskOne(prompt, &text)
✠Password
O Password é como o Input, porém, ele não mostra o que é digitado e usa string como valor de retorno
password := ""
prompt := &survey.Password{
Message: "Please type your password",
}
survey.AskOne(prompt, &password)
✠Confirm
O Confirm é uma questão de confirmação e usa bool como valor de retorno
name := false
prompt := &survey.Confirm{
Message: "Do you like pie?",
}
survey.AskOne(prompt, &name)
✠Select
O Select é uma questão de seleção, essa seleção é feita em um array que é dado como parametro e usa string como valor de retorno
color := ""
prompt := &survey.Select{
Message: "Choose a color:",
Options: []string{"red", "blue", "green"},
}
survey.AskOne(prompt, &color)
✠Multiselect
O Multiselect é uma questão de multipla seleção e as opções são dadas por um parâmetro que recebe um array e usa array como valor de retorno
days := []string{}
prompt := &survey.MultiSelect{
Message: "What days do you prefer:",
Options: []string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"},
}
survey.AskOne(prompt, &days)
✠Editor
O Editor abre o editor em VISUAL** ou **EDITOR e cria um arquivo temporário e quando o usuário sai do editor, uma string é retornada com o valor do que foi digitado no editor de texto, caso não fora definido o editor, ele abrirá o Bloco de notas no Windows e o Vim no Linux e Mac
prompt := &survey.Editor{
Message: "Shell code snippet",
FileName: "*.sh",
}
survey.AskOne(prompt, &content)