这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
课程前面半个小时用介绍了go的基本语法,本质上和java差别不算很大
第一节课总共介绍了三个实战小项目,第一个项目是猜数字游戏,这个项目整体难度不大,需要注意的点有:
第一:
secretNumber :=rand.Intn(maxNum)
对于这段代码,可以随机生成一个小于maxNum的整数,但直接这样子生成的话,每次生成的会是一样的数。为了每一次真正能做到生成随机数,需要加上:
rand.Seed(time.Now().UnixNano())
代表通过时间戳生成随机数种子
2、go中习惯用额外设置一个err参数的方式,接收错误信息,例如:
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occured while reading input.Please try again", err)
continue
}
如果没有错误的话,就会执行if里面的内容,否则报错
3、go中的nil有一点像null,但并不一样
在Go中,预声明的nil可以表示下列种类(kind)的类型的零值:
- 指针类型(包括类型安全和非类型安全指针)
- 映射类型
- 切片类型
- 函数类型
- 通道类型
- 接口类型 详情可以看:Go中的nil -Go语言101 (go101.org)
4、对于在线词典小项目,基本流程为:
①找到一个在线翻译的网站,并通过网站的“检查”功能,并找到NetWork选项,找到对应位置的请求(POST),然后copy as curl (如果有hash和cmd同时存在,选hash)
②在网站里,把这一段curl命令转化为go代码,这段代码执行之后就会获取一串json字符串
③要把json字符串序列化为go中的数据结构,则需要创建结构用于接收json中的数据结构,所以要定义一个数据结构
④再通过oktools,把json转成go struct,这样子输出之后就是所有请求回来的东西了,只需找到需要的部分即可