很多情况下在golang中使用nil。例如:
func (u *URL) Parse(ref string) (*URL, error) {
refurl, err := Parse(ref)
if err != nil {
return nil, err
}
return u.ResolveReference(refurl), nil
}
但是我们不能这样使用它:
var str string //or var str int
str = nil
Golang编译器将引发can't use nil as type string in assignment
错误。
看起来nil
只能用于struct和interface的指针。如果是这样,那意味着什么?而当我们用它来比较其他对象,他们如何比较,换句话说,如何golang确定一个对象是零?
编辑:例如,如果接口为nil,则其类型和值必须同时为nil。golang如何做到这一点?
在Go中,nil
是指针,接口,映射,切片,通道和函数类型的零值,表示未初始化的值。
nil
并不意味着某种“未定义”状态,它本身就是一个适当的值。Go中的对象nil
仅当且仅当其值为is时nil
,才可以是上述类型之一。
error
与接口不同,an 是一个接口,nil
一个有效值也是如此string
。出于明显的原因,nil
错误代表没有错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句