获取用户输入的两种方式

获取用户输入的两种方式

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)

posted @ 2022-08-29 11:12  sunnybowen  阅读(49)  评论(0编辑  收藏  举报