Go语言学习笔记:7.5 error与阶段性总结
ERROR
概念
除了panic
与recover
之外,Go中还有一个内置的错误接口类型,任何类型只要实现Error() string
方法,都可以传递error
接口 类型变量,Go语言处理错误的方式是将error
作为函数最后一个返回值,在调用函数时,通过检查其返回的error
值是否为nil
来进 行错误处理。
type error interface{ //接口类型
Error() string
}
Go语言提供了两个函数返回实现了error
接口的具体类型实例,一般的错误可以使这两个函数进行封装,当然,遇到复杂的错误也可以 自定义错误类型,只要实现error
接口即可:
func New(text string) error{
return &errorString{text}
}
最佳实践
- 在多个返回值的函数中,
error
一般作为最后一个返回值 - 如果一个函数返回
error
类型的变量,则先判断是否为nil
defer
语句应该放到err判断后面,不然可能产生panic
- 在错误逐层向上传递的过程中,错误信息应该不断的丰富与完善,而不是简单的抛出下层调用的错误,便于分析错误
其他要说的
Golang全面深入系列之 Error:https://studygolang.com/articles/12625
Go 语言如何实现error的优雅处理:https://blog.csdn.net/baogang409/article/details/72604333
阶段性总结
学了有一段时间了,也写了一些Go,感觉执行速度挺快的,毕竟不像Python这种解释性语言。部分语法与Python也很相像,从Python转到Go也不觉的陌生,学Go主要是写网络方面的程序,看网上的评价说Go对于网络编程性能还不错,要不然会有ngrok这种内网穿透的东东出 现。最后,路还长着,一次只学一点,细嚼慢咽的学。