`input = strings.TrimSuffix(input, "\r\n") //将字符串最后的\r\n换行符去掉
guess, err := strconv.Atoi(input) //可将字符串转换为数值`
这是按着第二节视频中的猜数字功能的实现的代码。我在将老师所讲的ppt上的代码敲入电脑时,发现一直出错。课件上的写法为input = strings.TrimSuffix(input, "\n")。而只有我把\n转化为\r\n,代码才能成功实现其功能。后来上网查阅得知,在unix中,一行的末尾是\n;而在windows中,一行的末尾是\r\n。所以要读取windows中一行的字符串,将其转化为数字时,需要去掉的是末尾的\r\n,不然err将一直存在。
下面是实现翻译查找代码的过程中产生和解决的问题。
用windows系统打开时,复制curl有两个选项,这时我们需要选择posix,若选择windows,在转化为go语言之后,运行时会报错。
此外,通过实践和查阅资料可知,go语言中的数组是值传递的,无法通过修改数组类型的参数返回结果。在必要时我们需要对其进行切片。
go语言中的map遍历的顺序是不固定的,map是一种哈希表的实现,每次遍历的顺序都可能不一样。
recover 必须在defer函数中运行。recover 捕获的是祖父级调用时的异常,直接调用时无效。defer调用时多层嵌套也无效。必须要到defer函数中直接调用才有效。
切片时会导致整个底层数组被锁定,底层数组无法释放内存。如果底层数组较大时会对内存产生很大的压力。解决方法是将结果克隆一份,这样可以释放底层的数组。