Go输入出现“/r”的一种解决方式

210 阅读2分钟

打卡第一天(Go项目出现“/r”的一种解决方式)
刚忙完毕设,第二份代码咔咔咔的时候有BUG显示如图一。

0c7de58fadfee04d1b657b23e8de3b3.png

发现报错:invalid strconv.Atoi: parsing "23\r": invalid syntax
23是我输入的数字然后出现了\r的错误。

然后chat了下原因:
这个错误的原因很可能是在读取器读取数据时未能正确处理换行符(\n)。"\r"字符通常是来自于Windows平台的文本文件,其行末会有两个字符“\r\n”(回车符+换行符),而Unix/Linux/Mac平台的文本文件行末只有一个换行符“\n”。
简而言之就是windows系统的输入会有“\r\n”这两个字符
源码input = strings.TrimSuffix(input, "\n")只去除了“\n”这个字符

然后我尝试用的解决方法是
input = strings.TrimSpace(input)
将输入中换行符和空格删除。
然后再喀喀喀运行发现strconv包中的Atoi函数(字符串转整数)成功解析可以把我的输入解析成数字。

还有一种方法将原来代码中TrimSuffix函数的变量改变下
TrimSuffix函数:它的作用是去除字符串的末尾指定的后缀,如果字符串不以指定的后缀结尾,则返回原字符串。
input = strings.TrimSuffix(input, "\r\n")
去除windows中“\r\n”就可以啦

两种方法都跑过。如上一点小BUG,windows系统的小伙伴如下修改就OK~

此外记录一些学习GO语言的基础内容:Go是一种静态强类型语言语法和C相近, 下面记录一些学的时候基础语法:

  • 整型

有符合整型: int8、int16、int32、int64,无符号整型:uint8(byte)、int16、uint32、uint64

  • 浮点型

    float32,float64

  • 布尔型

    bool 只有true(真)和false(假)两个值

算数运算符

 加法+ 、减法-、乘法*、除法/、取模%

逻辑运算符

逻辑与&&、逻辑或||、逻辑非!

位运算符

 左移<<、右移>>、异或^、与&、或|

关系运算符

相等==、不相等!=、大于>、小于<、大于等于>=、小于等于<=