Day1 笔记 | 青训营;

103 阅读2分钟

Go学习

Go语言基础
●函数中加入err类型变量用于出错时的输出
●在参数列表时类型名称写在后面
●指针写成 *int形式
字符串操作

image.png

json.marshal
序列化成二进制,与之对应的还有反序列化json.unmarshal
time.unix
获取时间戳
strconv
.ParseInt:
.Aoti:
进程信息

image.png

Go语言实战
curlconvert.com/#go
通过这个网站将copy来的curl转换为go的对应请求代码

image.png

oktools.net/json2go
json转Go结构体
sokets5协议
net.listen()侦听端口
serve.accept()建立连接
语言进阶依赖管理
协程:用户态,轻量级
线程:内核态,重量级
wait group

image.png

go vendor
解决了依赖版本不一致问题
弊端:无法控制依赖版本
go module
go mod 命令控制管理依赖版本
依赖三要素
配置文件,依赖描述
中心仓库
本地仓库
依赖配置
语义化:major, minor. patch
commit伪版本:
go get
@ update
@ delete 删除
@ V3.0.6 语义tag
@ 6bbbdf commit
@ master 最新conmit分支
go mod
init
download
tidy 增加依赖,清楚不需要的依赖
实践测试
回归测试
集成测试
单元测试
从上到下,覆盖率增大,成本降低
单元测试规则
命名
func TestXxx(t * Test.T)
逻辑单元放在Testmain中
快速mock函数
为函数打桩
为方法打桩

gin框架实现基本逻辑

Python复制代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

func main() {

if err :=init(filepath:"./data/"); err !=nil{

os.Exit(-1)

}

r:=gin.default()

r.GET(relative path, func(c, *gin.Context){

topicId=c.param(id)

data:=controller.QueryPageInfo(topicId)

c.json(200, data)

})

err:=r.run

if err!=nil{

return

}

}

高质量编程与编程规范
gofmt自动格式化代码
缩略词需要全部大写,但当其处于开头位置且不用提取出来则不必大写
变量距离最初使用距离越远,所需要的上下文信息也越多
recover只能用于defer中
defer是后进先出