Go语言 以小写字母开头时错误界面如何暴露在外部

41ik7eoe  于 2023-02-17  发布在  Go
关注(0)|答案(2)|浏览(127)

在Go语言规范中,需要导出到包外的东西必须以大写字母开头,我想知道error接口是如何暴露在包外的,并且可以在任何地方访问,即使它以小写字母开头,不像其他接口以大写字母开头,如Stringer

kx7yvsdv

kx7yvsdv1#

error是一个内置类型,就像intboolstring等。我猜你从来没有想知道为什么int是可用的,尽管开始与小写字母。
内置类型是预先声明的标识符,它们在Universe块中隐式声明,因此在任何地方都可用,而无需任何导入或限定符。

m1m5dgzv

m1m5dgzv2#

error是一种特殊情况,在语言规范中定义:
预声明的类型错误定义为

type error interface {
    Error() string
}

它是表示错误条件的常规接口,nil值表示没有错误,例如,可以定义一个从文件中读取数据的函数:

func Read(f *File, b []byte) (n int, err error)

作为历史琐事,在Go语言的预发布版本中,它是标准库包的一部分,但这会导致依赖噩梦,所以他们将其作为一个特例。

相关问题