bufio.Reader.ReadString()
返回string
也包含分隔符,在这种情况下,换行符\n
。
如果用户不输入任何东西只是按下输入关键的ReadString()
的返回值将是"\n"
,所以你要的结果比较"\n"
检查空输入:
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, err := reader.ReadString('\n')
if err != nil {
panic(err) // Don't forget to check and handle returned errors!
}
if text == "\n" {
fmt.Println("No input!")
} else {
fmt.Println("Hello", text)
}
一个更好的选择是使用strings.TrimSpace()
删除前导和尾随空格字符(包括换行符;如果有人输入2个空格并按输入,该解决方案也将其过滤掉),这不是一个有意义的名称。您可以比较空字符串""
如果调用之前strings.TrimSpace()
:
text = strings.TrimSpace(text)
if text == "" {
fmt.Println("No input!")
} else {
fmt.Println("Hello", text)
}
我不认为“输入一个空值”是有道理的。空是没有输入。你可以在一个流输入中得到最接近的字符串,它是一个长度为0的字符串,但是你知道在Go中(或者几乎任何语言)''“'和'nil'不是一样的。 – Flimzy
http://stackoverflow.com/questions/18594330/what-is-the-best-way-to-test-for-an-empty-string-in-go –