如何检查用户是否在Go中输入了空值?

Rah*_*bhu 1 string null file-io go

reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println("Hello",text)
Run Code Online (Sandbox Code Playgroud)

如何检查用户是否输入了空值以及我在何处放置代码?注意 - 我已经尝试检查长度= 0,= " "但是,它们似乎没有工作.

请建议另一种方法.谢谢!

icz*_*cza 6

bufio.Reader.ReadString()返回一个string包含分隔符的东西,在本例中是换行符\n.

如果用户不输入任何东西只是按下Enter键,返回值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)
}
Run Code Online (Sandbox Code Playgroud)

一个更好的选择是使用strings.TrimSpace()它去除前导和尾随空白字符(包括换行符;如果有人输入2个空格并按下它,它不是一个有意义的名称Enter,此解决方案也会过滤掉它).""如果您strings.TrimSpace()之前调用过,则可以与空字符串进行比较:

text = strings.TrimSpace(text)
if text == "" {
    fmt.Println("No input!")
} else {
    fmt.Println("Hello", text)
}
Run Code Online (Sandbox Code Playgroud)