这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
今天课程主要分为四个方面:
1.Go语言简介
2.Go语言开发入门,包括开发环境配置、基础语法、标准库
3.Go实战,包括三个实战项目:猜数游戏、在线词典和Socks5
学习感悟
- Go语言与以往学过的语言的不同点:
- 变量声明的两种形式:
var a = "initial"或a := "initial" - if用法:
if a < b {}条件没有小括号,语句必须写在大括号里边 - for用法:条件没有括号
- switch:case默认有break,switch 也可以不加判断条件,在case中进行判断
- slice切片:
s := make([]string, 3)增加时采用赋值方式:s = append(s, "d") - map:可以使用make函数创建新的map,其遍历时完全无序,不会按照字母顺序或者插入顺序遍历
- range:遍历数组、切片、字符串、map和通道中的元素
for i, num := range nums{} - 结构体与结构体函数
- 实战项目
- 猜数游戏
一个经典的猜数字游戏,给定一个随机数,让用户猜测这个数并给出相应的反馈,是大于要猜的数还是小于要猜的数,或者是成功猜对数字。
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)
}
在设定随机数时,rand.Seed(time.Now().UnixNano())是必不可少的,要加上时间戳,否则随机数将一成不变。输入数字时没有采用scanf,而是另一种较为复杂的方法。
- 在线词典
在这个实战项目中,我遇到的最困难的问题是抓包问题,这是我第一次抓包,遇到了一些阻碍,这个项目通过HTTP爬虫爬取其他在线词典网站的结果并返回。
- Socks5
这个项目简单的实现了Socks5的握手流程,并给予回答。
总结
这是我第一次接触GO语言,其知识与我之前所学知识有不同之处,这让我在刚开始学习的过程中有些吃力,有些知识应用还没有掌握彻底,但学习之旅刚刚开始,我很期待接下来的学习,一起加油吧!