1、创建野生Goroutine的建议方式,核心就是要 recover 住,不能因为野生 goroutine panic 导致进程退出。
func Go(x func()){go func() {defer func(){if err := recover(); err != nil {fmt.Println(err)}}()x()}()}
2、需要复制切片时,通过追加到一个nil切片来复制切片
3、error处理
- 尽量对外暴露方法,接口类型和常量要尽量少暴露,减少耦合
如果要处理错误,一定要对 value 负责,比如赋一个默认值,或者进行降级,不处理错误就一定要往上抛,处理了错误(记日志),就不要往上抛,否则日志打的到处都是
业务代码,第一次与基础库,rpc等交互的时候,对error进行wrap,后续代码中自己调用自己的函数时,直接return,将错误往上抛
第一次错误的时候wrap,不一定是在最底层,但是需要自己能判断出来
- error 处理库, pkg/errors
golang
