Golang interface 判断 是否等于 nil

寵の児 提交于 2019-12-05 06:49:06
package main

import "fmt"

type I interface{
      Print()  
}

type A struct{}
func(a *A) Print(){}

func New1() I{
      var a *A = nil
      return a  
}

func New2() I{
     var a I = nil
     return a        
}


func main(){
     a := New1()
     if a == nil {
           fmt.Println("a is nil")
    }else{
           fmt.Println("a is not nil")   //执行
    }
    b := New2()   
    if b == nil {
           fmt.Println("b is nil")       //执行
    }else{
           fmt.Println("b is not nil")
    }
}

  Golang的interface 要值和类型都为nil  才等于 nil,所以判断返回值的时候要小心

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!