回答

收藏

在 golang 中 nil 是什么意思?

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

在 golang 中使用nil 的情况很多。# A  @8 q# ?* y$ h. L; |, {; `
    func (u *URL) Parse(ref string) (*URL,error)    refurl,err := Parse(ref)    if err != nil        return nil,err   }    return u.ResolveReference(refurl),nil}
    ; I4 d' Y2 u+ w% s. l( y' N
但我们不能这样使用它:! H9 M/ J, H% n7 U; E
    var str string //or var str intstr = nil: e9 V: {* ^6 H6 Y# u
golang 编译器会抛出can't use nil as type string in assignment错误。- ~3 R: E# j$ F0 U
看起来nil指针只能用于结构和界面。真是这样,那又这是什么意思?    而当我们用它来比较其他对象时,他们如何比较,换句话说,如何golang确定对象为零
1 {0 _& Q3 e, Q" B" _( o9 c2 U例如,如果接口为零,则其类型和值必须同时为零。golang 是怎么做到这一点的?, c2 L1 I3 X2 G7 F# f& N$ Y. u* ~
                                                                # ~0 i; I- n4 H4 w2 o3 m  n; y- s
    解决方案:                                                               
6 ]& q" ?7 p3 x4 n  {                                                                在 Go 中,nil是指针、界面、映射、切片、通道和函数类型零值,表示未初始化的值。
* k/ U( `8 j- g: I7 Fnil这并不意味着某种未定义状态本身就是一个合适的值。Go 中的对象nil只是当,只是当它的值nil,它只能是上述类型之一。% u) B. y, V* S& ~* j
Anerror因此,它是一个接口nil它的有效值是一个a 不同string。出于明显的原因,nil错误代表没有错误。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则