这是我参与「第三届青训营 -后端场」笔记创作活动的第 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