了解Go | 青训营笔记

85 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第 1 篇笔记

Go 基础

变量 var a int 先 变量在类型 var a , b int a:=3 自动推导

函数 func 函数名(参数变量 )返回值 { 函数体 }

常量不能用 :=声明

没有while 关键字 通过for 实现

牛顿迭代法 近似值 a=sqrt(x) ->
z-=(zz-x)/(2z)

switch 匹配就停止 可以没条件 Slice 切片 就是数组的引用,效率高,方便 ;通过 make([]T, len)来创建一个T类型的切片 引用

map 哈希表 key val 尽力一个映射,访问效率高, 通过 ages := make(map[string]int) 创建一个 哈希表 。如果第二个类型为空{},即表示一个set,表述一个集合。

defer 修饰的函数 在出作用域时调用,先进后出 相当于栈

方法 func (a 类型A)方法名Abs() 返回值int { } // 类型A的方法

Go

1.1.并发与并行 (协程 gorountine) 协程 在用户态 轻量级的线程 一般在 kb 时间 协程建立切换 开销较小 线程 在内核态 一个线程可以并发执行多个协程 线程的建立,切换 开销 比较大

通过 通信 实现共享内存;不是通过 共享内存 实现通信

1.2. channel 通道 通过 make(chan int ) 创建 一个 int 型的 通道 通过 make(chan int , 3)创建 一个带有缓存区的 通道 该通道只能缓存 3 多了会阻塞

1.3. Lock 加锁 sync.Mutex 非安全的 并发操作 要加锁

1.4. waitGroup 协程管理 Add () 添加 计算器 done 计数器 -1 wait 阻塞直到计数器为0

2项目管理 不同环境(项目)依赖版本不同 控制依赖库的版本

环境变量 GOPATH bin 项目编译的二进制文件 pkg 项目编译中间产物 加快编译 src 项目源码 所有代码都在这 go get 下载的包也在
弊端 不能很好的控制 版本的问题

2.1依赖管理三要素 配置文件,描述依赖 go.mod 中心仓库管理依赖 Proxy 本地工具 go get /mod