[后端 | 青训营笔记]Day1

120 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作的第三天,下面是我作为一个初学者第一天学习go语言的一些心得和笔记。

一.走进Go语言基础语言

首先了解什么是go语言,Go(又称Golang)语言是Google公司开发的一种静态型、编译型并自带垃圾回收和并发的编程语言。它具有高性能,高并发,语法与c语言相似,学习简单,有完善的标准链和丰富的标准库等优点。 在基础语法的学习中,我首先学习了map和range,并且map是完全无序的。通过相加函数的引入func add(a int,b int)int{return a+b}从中发现Go语言变量类型是后置的。指针的常用途是对常用的参数进行修改,但在go语言中相对c比较功能比较局限。字符串格式化使用代码 fmt.Println(s,n) 随后在基础语法中又讲解了1.Json处理2.时间处理3.数字解析的知识点。

二.Go 语言的实战案例

本次实战案例课程分为三个小例子,分不饿时猜谜游戏,命令行词典和Socks5代理。接下来我会展开介绍这三个实例在编写代码的过程和细节。

1.猜谜游戏

生成随机数,猜对则退出游戏。生成随机数需要用到math/rand包 maxNum:=100 secretNumber:=rand.Intn(maxNum) fmt.Println(“The secret is”,secretNumber) 但我们发现每次输出都是相同的数字,解决方法就是使用前要设置随机数种子,添加一行代码用时间戳来初始化随机数种子rand.Seed(time.Now().UnixNano) 第三步就是去解决用户的输入与输出,经过Atoi转化成数字。 第四步实现判断逻辑,第五步实现游戏循环,通过一个for循环在输入出错的时候不要retrun,继续 continue执行下一个循环。直到最后运行成功在break。

2.命令行词典

其原理是用第三方的api去查询单词, 输入单词进入程序,程序将输出单词的音标,词性及其意思。学习如何用http发送请求,并通过curl请求生成代码 。发起请求后使用代码 resp,err:=client.Do(req)。注意解析resoponse body也要用到oktools生成代码,最后改函数主体改为query函数。

3.Socks5代理介绍

该实例主要用于某些企业内网为了安全性配置了很严格的防火墙策略 但带来的问题是企业内部人员访问很麻烦,Sock5相当于在防火墙开了个口子,方便内部人员访问。其工作原理分为四个阶段1.握手(协商)2.认证 3.请求 4.relay 注意这个阶段先进行较为简单的TCP echo,简单来说就是你给他发送啥,他就回复啥。当Relay结束接下来建立浏览器和下游服务器的双向转换。

三.总结

经过一天的学习,我深深感受到go语言的魅力。最大的感受还是自己知识储备量不足,很多知识点需要反复推敲才能明白,希望在日后学习的过程中更加积极。