golang判断指针是否为空的方法:

1、知道类型的情况下,自然是可以使用类型断言后判空。如ai, ok := i.(*int),之后判断ai == nil。

2、不知道是何种类型的指针,就只好借助反射了vi := reflect.ValueOf(i),后使用vi.IsNil()来判断。但如果i里放到不是一个指针,调用IsNil会出异常,则可能要写一个这样的函数来判空

func IsNil(i interface{}) bool {    defer func() {        recover()    }()    vi := reflect.ValueOf(i)    return vi.IsNil()}

但有这样强加一个defer的recover确实不好看,于是借助类型判断变成这样

func IsNil(i interface{}) bool {    vi := reflect.ValueOf(i)    if vi.Kind() == reflect.Ptr {        return vi.IsNil()    }    return false}

更多golang知识请关注PHP中文网golang教程栏目。

更多相关文章

  1. golang判断错误类型的方法
  2. 详解 Go 中的不可变类型
  3. 总结 Go 的数据类型
  4. 关于Go指针的介绍
  5. 详解Golang中函数作为值与类型
  6. golang中方法的receiver为指针和不为指针有什么区别
  7. 关于Golang 指针理解
  8. go语言有指针吗
  9. 解决golang中vendor引起的相同类型,却提示类型不一样问题

随机推荐

  1. 如何在git特性分支工作流中处理xml/html
  2. 基于HTML5的iPad电子杂志横竖屏自适应方
  3. Delphi下发送Email的方法
  4. jQuery验证没有错误计数
  5. (转)让所有浏览器支持HTML5 video视频标签
  6. 不会出现Javascript context.closePath()
  7. 宽度切换jQuery中的Animate在FireFox中不
  8. JQuery从动态内容加载动态内容
  9. HTML5移动开发基础
  10. Jquery实现table行数的增加,删除,实现指定