如何用bufio检查用户输入是否为空?

时间:2017-11-18 00:16:11

标签: go

我是Go语法的新手,如果用户没有输入任何内容,只是尝试传递错误...

[编辑]如果用户没有输入任何内容,我希望以下功能停止运行,并打印日志。我的if required && answer == ""声明似乎无法正常工作;您必须输入一个值。"当用户没有输入任何内容时不记录。

func QAR(q string, r string, required bool) string {
  reader := bufio.NewReader(os.Stdin)

  // Print the question
  fmt.Printf(q)
  answer, _ := reader.ReadString('\n')

  // If the answer is empty, return a log
  if required && answer == "" {
    log.Fatal("You must enter a value.")

    // Can I just use return to block it?
    return
  }

  // Print the response with the answer
  if r != "" {
    fmt.Println(r, answer)
  }

  return answer
}

1 个答案:

答案 0 :(得分:1)

go中的典型模式是返回多个值,如果发生了一个,则最后一个是错误。所以你的函数签名可能如下所示:

func QAR(q string, r string, required bool) (string, error)

这样的返回语句:

return "", fmt.Errorf("user provided no input")
// ...
return answer, nil

<强> [编辑]

请注意,bufio.Reader.ReadString(...)包含分隔符,因此您可能需要检查是否answer == "\n"