这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
本篇继续笔记录青训营第一堂课遇到的问题,学习三个案例项目的内容。
视频课内容
概括的讲解了golang的基础语法等知识,详细讲解了猜数字,翻译词典,sockets5代理三个实践项目。网课对golang有一定的了解的初学者,也会有一点点小难度,但是问题不大。golang基础知识靠课前课下自学,有其他语言基础,上手会容易一些。
项目实战练习
猜数字的代码手撕复刻了一遍,命令行词典、sockets5代码仅观看源码学习。
猜数字
内容:随机生成一个100以内的数字,输入猜测的数值,猜测正确程序结束,猜测错误则提示偏大或偏小,循环到结束。重点在于输入的处理。
代码流程:源码用bufio.NewReader将输入转化为流,再用reader.ReadString读取流中一整行的数据,读取到换行符后停止,但是这种处理也会把最后的换行符一起读取到input里,所以还要调用strings.Trim把末尾的换行符删掉。这里的input变量类型为字符串,为了后续能与猜测的数字进行比较,这里还需要使用strconv.Atoi把字符串转换为整数才可以。源码对输入的处理较为复杂,不考虑错误的情况下,调用了四个函数。如果注意读取信息时,结尾是否有多余的空格等需要处理。考虑这种情况,代码可以进一步完善优化,办法可以是去除"\r\n",或者读到“\r”后再去除“\r”。
源码:
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occured while reading input. Please try again", err)
return
}
input = strings.Trim(input, "\r\n")
guess, err := strconv.Atoi(input)
课后题目:
思考优化代码的方法——考虑直接调用输入函数fmt. Scan将输入的数直接赋值guess。
Go的输入:
Scan、Scanf、Scanln都可以输入文本内容;
Scanf、Fscanf、Sscanf会根据字符串的格式解析参数。
命令行词典
练习的大致思路过程:创建请求,curl生成爬虫,json转换数据后,发送请求响应得到body数据,再反序列化,筛选信息。每个环节还有错误处理、检测响应状态等。
其他略
小结
本节课程内容非常好,书本上基本都是理论为主,青训营的课程实践很关键,有针对性。
还是得多动手!!!!