编写好的异常处理
===
Go语言提倡快速失败
把要向检测的内容放到最前
~~~
func division(a,b int) (int,error) {
if a >= 0 && b > 0 {
c := int(a/b)
return c,nil
}
return 0,errors.New("0 不能")
}
func TestDivision(t *testing.T) {
//i, e := division(3, 4)
i, e := division(3, 0)
if e != nil {
t.Fatal(e.Error())
}
fmt.Println(i)
}
~~~
### 如果要对错误后续作判断,需要预先定义错误,然后最比对
~~~
var (
LessZeroError = errors.New("0错误")
)
func division(a,b int) (int,error) {
if a >= 0 && b > 0 {
c := int(a/b)
return c,nil
}
return 0,LessZeroError
}
func TestDivision(t *testing.T) {
//i, e := division(3, 4)
i, e := division(3, 0)
if e != nil {
t.Fatal(e.Error())
}
fmt.Println(i)
}
~~~
- Hello World
- UDP
- UDP服务端
- UDP客户端
- UDP广播
- 错误处理
- 编写好的异常处理
- panic和recover
- 并发编程
- Hello Goruntine
- 共享内存并发机制
- RWMutex
- CSP并发机制
- 多路复用和超时控制
- 通道关闭与广播
- Context与任务的取消
- 只运行一次
- 按需任意任务完成
- 所有任务完成
- 补充:range channel注意实现
- 对象池
- sync.Pool临时对象池
- 单元测试
- 表格测试法
- Banchmark
- BDD
- 反射
- 利用反射编写灵活的代码
- Struct Tag
- 万能程序
- 常用架构模式
- Pipe-filter pattern
- Micro Kernel
- 性能分析
- 高性能代码
- sync.MAP分析
- Concurrent Map
- GC友好的代码
- Uber开发风格规范