code: func (p *Prompter) Prompt() string {
  	fmt.Print(p.msg())
  	if p.UseDefault || skip() {
  		return p.Default
  	}
  	input := ""
  	if p.NoEcho {
  		b, err := terminal.ReadPassword(int(os.Stdin.Fd()))
  		if err == nil {
  			input = string(b)
  		}
  		fmt.Print("\n")
  	} else {
  		scanner := bufio.NewScanner(os.Stdin)
  		ok := scanner.Scan()
  		if ok {
  			input = strings.TrimRight(scanner.Text(), "\r\n")
  		}
  	}
  	if input == "" {
  		input = p.Default
  	}
  	if !p.inputIsValid(input) {
  		fmt.Println(p.errorMsg())
  		return p.Prompt()
  	}
  	return input
  }
docs: // Prompt displays a prompt and returns answer