reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('n')
fmt.Println("Hello",text)
如何检查用户是否输入空值以及在哪里放置代码?注意 - 我已经尝试检查长度= 0
和= " "
,但是它们似乎无法正常工作。
请建议这样做的另一种方法。谢谢!
bufio.Reader.ReadString()
返回一个>包含特定器的string
,在这种情况下,newline字符 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()
,它可以删除领先和尾随的白空间字符(包括newline;如果有人输入2个空格并按下 Enter ,它也不是有意义的名称,此解决方案也是如此过滤出来(。如果您称为strings.TrimSpace()
,则可以与空字符串""
进行比较:
text = strings.TrimSpace(text)
if text == "" {
fmt.Println("No input!")
} else {
fmt.Println("Hello", text)
}
//我到目前为止写的最好的算法
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
Wellcome()
sina := get_Informations()
fmt.Printf("%v", sina)
Goodbye()
}
func Wellcome() {
fmt.Println("Welcome to this Program ...[*]")
}
func get_Informations() (string){
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter First-Name: ")
firstName, _ := reader.ReadString('n')
if len(firstName) >= 5 {
return firstName
}
for {
fmt.Print("First-Name must be more than 3 characters: ")
firstName, _ := reader.ReadString('n')
if len(firstName) < 5 {
continue
}else if len(firstName) >=5{
return firstName
}
}
}
func Goodbye() {
fmt.Println(" ")
fmt.Println(" ")
fmt.Println(" [*]----------------------[*] ")
fmt.Println(" [*]----THANKS.GOODBYE----[*] ")
fmt.Println(" [*]----------------------[*] ")
fmt.Println(" ")
fmt.Println(" ")
}