bufio.Reader.ReadString()
戻りstring
もは、この場合、改行文字\n
に、区切り文字が含まれています。
ユーザーはちょうどが Enterキーを押す何も入力しない場合は、空の入力をチェックする"\n"
に結果を比較する必要がありますので、ReadString()
の戻り値は、"\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)
}
私は理にかなっている「null値を入力します」とは思いません。 Nullは入力がないことを示します。あなたがストリーム入力で得ることができるのは、長さ0の文字列ですが、あなたが知っているように、 ''は '' Go '(あるいはほぼすべての言語)の 'nil'と同じではありません。 – Flimzy
http://stackoverflow.com/questions/18594330/what-is-the-best-way-to-test-for-an-empty-string-in-go –