回答

收藏

在 golang 中 nil 是什么意思?

技术问答 技术问答 284 人阅读 | 0 人回复 | 2023-09-12

在 golang 中使用nil 的情况很多。
$ v/ u! X' f$ c( d& C) P7 ?
    func (u *URL) Parse(ref string) (*URL,error)    refurl,err := Parse(ref)    if err != nil        return nil,err   }    return u.ResolveReference(refurl),nil}7 x, ^0 ~, G1 V( \. @
但我们不能这样使用它:, A4 x" z0 E. A! B
    var str string //or var str intstr = nil* b3 E* g/ f# q8 u8 i
golang 编译器会抛出can't use nil as type string in assignment错误。% N7 h6 ?3 H) M4 {" A& ^; y$ \
看起来nil指针只能用于结构和界面。真是这样,那又这是什么意思?    而当我们用它来比较其他对象时,他们如何比较,换句话说,如何golang确定对象为零" \% h6 d. k8 d" m2 A9 Y+ D
例如,如果接口为零,则其类型和值必须同时为零。golang 是怎么做到这一点的?
  v. r9 G3 t% D& `                                                                % ^+ S/ ~% t5 I% f9 b
    解决方案:                                                                ( D( M& h! s, d2 e; F) y
                                                                在 Go 中,nil是指针、界面、映射、切片、通道和函数类型零值,表示未初始化的值。$ K. a2 B! d) U- q! w& C
nil这并不意味着某种未定义状态本身就是一个合适的值。Go 中的对象nil只是当,只是当它的值nil,它只能是上述类型之一。+ x& `1 W9 J2 c6 o
Anerror因此,它是一个接口nil它的有效值是一个a 不同string。出于明显的原因,nil错误代表没有错误。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则