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

标签 string go file-io null

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

如何检查用户是否输入了空值以及将代码放在哪里?注意 - 我已经尝试检查长度 = 0= "" 但是,它们似乎不起作用。

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

最佳答案

bufio.Reader.ReadString()返回一个字符串,它也包含定界符,在本例中为换行符\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)
}

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

text = strings.TrimSpace(text)
if text == "" {
    fmt.Println("No input!")
} else {
    fmt.Println("Hello", text)
}

关于string - 如何检查用户是否在 Go 中输入了空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43490148/

相关文章:

java - 为什么需要 `String[] args` 作为 main() 参数?

go - IIS 作为 golang socket.io 的反向代理

c++ - 读取二进制文件的问题(ascii 和二进制的混合)

java - 创建二维数组然后将其写入文件的困难 (Java)

c - 使用sscanf从c中的字符串中提取

javascript - 替换文本区域中特定位置的字符

go - 如何代理校验和数据库

python - 使用非 ASCII 字符在 Python 中执行文件 I/O

python - 如何解决读取 csv 的问题,该文件是分号分隔的文件,其中某些字符串包含分号?

Mysql自增Id在使用prepared statements时不按顺序