后端Go入门 | 青训营笔记

88 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第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,这样就能实现一个变量输入,输出翻译的功能了。还有一些其他地方的代码修改。

课后总结

在线词典的代码,我是一边看视频,一边跟着去操作的。最后还是有地方报错,在对照这给的参考代码之后才最终完成,感觉还要要多亲手操作。第三个项目看完以后感觉还是不太懂,要多看多总结。

引用

该文章部分内容来自于以下课程

  • 字节内部课-后端入门