nil在golang中是什么意思?

starkshang:

很多情况下在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如何做到这一点?

LemurFromTheId:

在Go中,nil指针,接口,映射,切片,通道和函数类型零值,表示未初始化的值。

nil并不意味着某种“未定义”状态,它本身就是一个适当的值。Go中的对象nil仅当且仅当其值为is时nil,才可以是上述类型之一。

error与接口不同,an 是一个接口,nil一个有效值也是如此string出于明显的原因,nil错误代表没有错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章