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 –