今天听了第一个课程,也就是go语言的基础语法和实战案例。 之前有过c++和java的基础,我觉得基础语法不是很难。大都是一样的,不过就是换了个类型出现而已。在熟悉和了解了一些语法之后,我就开始看go语言实战案例的内容,今天主要想记录一下关于第一个猜数字游戏的一些问题和经验总结。 首先是生成随机数,这个是比较死板的东西,也没啥好谈的。生成之后开始下一步,自己输入一个数字,系统通过reader来读取输入的数字。我的代码是这样的:
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
input = strings.TrimSuffix(input, "\n")
我输入的时候却报了个错,是这样的: strconv.Atoi: parsing "1\r": invalid syntax 翻找资料,我发现这是linux和windows的不同之处。win10平台在按回车键之后,在参数的末尾加上\r\n作为换行符,而我只处理了\n的这种情况,没有考虑\r\n这种情况。 所以,我找到了如下两种解决办法:
input = strings.TrimSpace(input) // 将输入中换行符和空格删除,这样就解决了
或者是
input = strings.TrimSuffix(input, "\r\n") //把/r和/n都删掉,这样就解决了
这样就完美解决了问题。 最后,要做的是加上循环,然后判断自己输入的数字和随机数的大小。(这里要把之前输出随机数的语句删掉,不然用户第一下就能看到随机数了哈哈哈。。)判断大小比较简单,就是简单的if-else语句,关于这个for循环,要往哪里加,这是个问题。我一开始把for的位置加错了,然后程序就开始一直跑一直跑……最后成功改过来了,完成了这次试验。 关于课后作业,使用fmt.scanf来简化代码,我也已经成功完成,在这里就不赘述啦。