获取用户输入的两种方式
获取用户输入的两种方式
1. Scan方式读取
func useScan() {
var s string
fmt.Print("请输入内容:")
fmt.Scanln(&s)
fmt.Printf("你输入的内容是:%s\n", s)
}
2. bufio读取方式
func useBufio() {
var s string
reader := bufio.NewReader(os.Stdin) //对比一下读文件的传参,这个后面学习会用到
fmt.Print("请输入内容:")
s, _ = reader.ReadString('\n')
fmt.Println("你输入的内容是", s)
}
debug一下,可以看到,bufio读取方式,获取的s是有\r\n
,一个回车,一个换行的。
这是要注意的,有一次我在使用这种方式获取用户输入时,判断如果用户输入的是exit,就退出循环(程序),但是不管怎么输入,都没有走到判断语句里
debug后,发现,msg后面带了\r\n
重新改了判断条件,再次编译,输入exit时终于可以成功退出了。
if msg == "exit\r\n" {
break
} else {
socket.Write([]byte(msg))
// 收数据
n, _, err := socket.ReadFromUDP(reply[:])
if err != nil {
fmt.Println("rec reply failed,err:", err)
return
}
fmt.Println("收到回复的信息: ", string(reply[:n]))
}
3. 补充
对于bufio,用法很多,后面遇到了再详细介绍,这里介绍一下上面使用了break语句退出了无限循环,程序也就终止执行了,当然也可以直接退出程序os.Exit(1)