Go语言中的接口、泛型与反射:深入解析与应用
1. 错误数据类型
在Go语言里,错误数据类型是一个接口,其定义如下:
type error interface {
Error() string
}
要让一个类型满足 error 接口,只需实现 Error() string 方法。不过,何时该自定义错误接口而非使用默认的呢?答案是当你想为错误条件提供更多上下文信息时。
以文件读取为例,当文件无内容可读时,Go会返回 io.EOF 错误,严格来说这并非错误,而是文件读取的正常逻辑。但在某些场景下,可能需要区分文件是完全为空,还是已读完且无更多内容。借助错误接口就能解决此问题。
以下是 errorInt.go 的核心代码(省略包和导入部分):
type emptyFile struct {
Ended bool
Read int
}
// Implement error interface
func (e emptyFile) Error() string {
return fmt.Sprintf("Ended with io.EOF (%t) but read (%d) bytes",
e.Ended, e.Read)
}
// Check values
func isFileEmpty(e error) bool {
// Type
超级会员免费看
订阅专栏 解锁全文
42

被折叠的 条评论
为什么被折叠?



