这是我参与「第五届青训营 」笔记创作活动的第1天。
主要记录课程的重点和课上所讲项目的每一步以及我的思考
1.走进 Go语言基础语言
Go语言特点
1.高性能,高并发
2.语言简单,在C语言基础上,做了大幅度简化,学习曲线平缓
3.丰富的标准库
4.完善的工具链
5.静态链接
6.快速编译
7.跨平台,能在多平台,设备运行,无需配置交叉编译环境
8.垃圾回收
Go语言的应用场景
GO语言在云计算,微服务,大数据,区块链,物联网等领域有着广泛的应用,尤其是在云计算和微服务有着比较高的市场占有率。
Go语言的开发环境
如何下载Go,Goland以及配置环境变量在网上已经有很多教程了,这里我就不多说。
基础语法
课上把Go的基础语法都简单讲了一下,因为我之前学过c,所以感觉类似点不少,但也有区别,主要写一下Go语言不同的地方。
1.Go语言的变量是类型后置的,比如:
var a = "initial"
一般会自动推导变量类型,我们也可以自己写出。
2.Go只有for循环,当我们不为for语句写其他表达式的时候,将是一个无限循环,我们可以使用continue和break继续或结束循环
3.switch,在Go中如果switch case后不加berak,也不会继续往下跑完所有位置。且switch可以使用任意变量类型。
4.数组,切片,映射感觉和其他的语言都差不多,就不加阐述了。
2.Go语言实战
今天还有一节课专门讲了三个项目,一个是猜谜游戏,一个是在线词典,还有一个是SOCKS5代理。主要讲一下前两个,因为第三个我还要再反复看视频,多学习。
猜谜游戏
1.生成随机数 (1)要用到math/rand包 (2)定义变量 (3)用rand.Intn生成随机数 (4)打印出这个随机数 试验发现这样做每一个随机数都一样,是因为没有生成随机数种子,所以要用启动时的时间戳来初始化随机数种子,使用rand.seed来实现
2.读取用户输入并解析成数字
程序执行前,要打开几个文件,用os.Stdin得到,但这样直接操作不方便,用bufio.NewReader把它转成一个只读的流,这样就有很多种方法来操作这个流。用Readstring去这个流里读取一行,接下来就是去掉换行符,再用atoi把输入转成数字,最后得到用户输入的数字
3.实现判断逻辑
这就是if else的使用,比较简单
4.实现游戏循环
到目前为止,程序只能猜一次数字,玩家就会被强制退出,所以我们需要加一个循环,加在读取的前面,在循环里面,如果猜错,则continue,猜对则break,退出游戏。
在线词典
1.抓包
打开翻译网站,右键检查,打开开发者工具,然后点一下翻译网页中的翻译按钮,在开发者工具页面中network的name目录下找到dict,这里dict中的请求方式要是post,我一开始在微软默认的浏览器中,dict的请求方式都是options,后面换了谷歌浏览器,才有post的出现。
2.生成代码解读
这个请求代码构造很麻烦,所以选择简单的方式来做,在dict右击,copy中选择copy as CURL,这里会返回一大串jSON,在curlconvert网页粘贴选择go生成代码。
3.生成request body
现在输入是固定的,我们要一个变量的输入。所以我们要构造一个结构体。
4.解析response body
上一步我们实现请求的数列化,接下来我们要完成返回的response的反数列化,要把response解析出来,获取里面的音标,翻译这些内容。所以和上一步一样,我们继续要做一个结构体。oktools网站用原先dict里面response的内容生成代码。在这个里面,课程里有个口误,说的是preview的内容,其实不是。
5.完善代码
将func main改成func query以及good改成word,这样就能实现一个变量输入,输出翻译的功能了。还有一些其他地方的代码修改。
课后总结
在线词典的代码,我是一边看视频,一边跟着去操作的。最后还是有地方报错,在对照这给的参考代码之后才最终完成,感觉还要要多亲手操作。第三个项目看完以后感觉还是不太懂,要多看多总结。
引用
该文章部分内容来自于以下课程
- 字节内部课-后端入门