Golang 概念汇总
2019-09-03 16:38:35 0 举报
AI智能生成
学习 go 概念总结
作者其他创作
大纲/内容
defer
os.Exist
命令
清除已安装的 package
1.1. 手动删除 GOPATH/src 下的 package 源码文件夹
1.2 手动删除 GOPATH/pkg/ 下编译后的 package 文件
2.1 执行删除编译后的 package 文件 go clean -i github.com/motement/gore...
2.2 手动删除 GOPATH/pkg/ 下编译后的 package 文件
goroutine
并发/锁
sync.Mutex 锁
Sync.WaitGroup 携程同步
sync.RWMutex 读写锁
CSP
通讯优于共享
与 Actor 区别
1. actor 之间直接通讯
2. actor 模式的 mailbox 容量是无限的, goland 有限制
goland channel
select
多渠道的选择
超时控制
reflect 反射
Unsafe 不安全编程 ch24
panic
用于不可恢复的错误
panic 退出前会执行 defer 函数
与 os.Exist 区别是 panic 能打印出错误异常栈、会执行 defer 函数
子主题
recover
帮助go截获错误(一般来自 panic)
警告:利用 recover 机制使程序从错误中恢复过来。是不推荐的;会形成僵尸进程而且 health check 失效
推荐:Let it Crash
package
基本的可复用模块
访问规则
函数首字母大写可在 package 外访问
函数首字母小写则只能 package 内访问
同一个目录下的 Go 源码文件 package 要保持一致
项目的 GOPATH 需要配置
init 方法
在 main 被执行前,所有依赖的 package 的 init 方法都将会被之心
每个保重可以有多个 init 方法
远程 package 使用
download from github. e.g: go get -u 'github.com/easierway/concurrent_map'
1. 获取远程依赖
通过 go get 获取当本地不存在时才会从 Github 获取
通过 go get -u 强制从网络更新远程依赖
2. 注意代码在 Github 上的组织形式,直接以代码路径开始不要有 src 以适应 go get
依赖管理
glide
1. 进入当前 package 下执行 glide init 生成依赖 yaml 配置文件
2. 执行 glide install 根据 glide.yaml 文件生成 package vender 文件夹并将依赖保存在此目录下
测试
benchmark
assert
BDD
goconvey
DeepEqual
使用 reflect.DeepEqual 是可以比较的
slice map
架构模式
pipe - filter
收藏
0 条评论
下一页