回答

收藏

在 golang 中 nil 是什么意思?

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

在 golang 中使用nil 的情况很多。
! R! N. g, T, \4 z
    func (u *URL) Parse(ref string) (*URL,error)    refurl,err := Parse(ref)    if err != nil        return nil,err   }    return u.ResolveReference(refurl),nil}
    4 v0 Y. Q# ]( i& T: L+ N
但我们不能这样使用它:
6 e# Z4 z) S/ W
    var str string //or var str intstr = nil) [5 \3 H1 ^0 D+ ~' o" n* J
golang 编译器会抛出can't use nil as type string in assignment错误。
; D1 b, }5 P1 h7 p; }& R% H6 _$ z看起来nil指针只能用于结构和界面。真是这样,那又这是什么意思?    而当我们用它来比较其他对象时,他们如何比较,换句话说,如何golang确定对象为零
; Z. @0 `' [2 [8 y5 m例如,如果接口为零,则其类型和值必须同时为零。golang 是怎么做到这一点的?- d8 w7 x6 J" {  n7 \8 T6 M4 r
                                                               
/ E2 l& d; w$ M8 c    解决方案:                                                                ; H" V& k. y7 N  n0 s" J
                                                                在 Go 中,nil是指针、界面、映射、切片、通道和函数类型零值,表示未初始化的值。- e1 V2 k/ m5 P  C+ a. l; z: S
nil这并不意味着某种未定义状态本身就是一个合适的值。Go 中的对象nil只是当,只是当它的值nil,它只能是上述类型之一。
7 j8 s0 T; M( ~Anerror因此,它是一个接口nil它的有效值是一个a 不同string。出于明显的原因,nil错误代表没有错误。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则