zoukankan      html  css  js  c++  java
  • [Go] 理解(*interface{})(nil) 赋值的变量是否为nil

    现在有这样两种赋值方式

    a := (*interface{})(nil)

    var c interface{}
    c = (*interface{})(nil)

    a现在是啥 ?

    (*interface{})(nil) 意思是把nil 类型转换为  *interface{}类型

    a相当于  var a *interface{} = nil    ,  a是个指针 , 指向了nil  , 所以a是nil

    c现在是啥 ?

    c是 interface{} 类型 , 这个类型有两个属性 , type和data  , 

    c的type属性是*interface{}   有值  ,  c的data属性是nil 无值

    只有当type和data都是nil时  ,  空接口才是nil  ,  所以c不是nil 

        a := (*interface{})(nil)
        log.Printf("%v
    ", a == nil)
        var c interface{}
        c = (*interface{})(nil)
        log.Printf("%v
    ", c == nil)

    开源作品

    GO-FLY,一套可私有化部署的免费开源客服系统,安装过程不超过五分钟(超过你打我 !),基于Golang开发,二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的网页在线客服系统,致力于帮助广大开发者/中小站长快速整合私有客服功能
    github地址:go-fly
    官网地址:https://gofly.sopans.com

    赞赏作者

    微信交流

  • 相关阅读:
    logback-spring.xml配置文件详解
    SpringBoot-Controller接收参数的几种常用方式
    spring boot配置定时任务设置
    SpringCloud 配置文件 application.yml和 bootstrap.yml区别
    ajax/get请求
    ajax封装2
    ajax封装1
    楼层特效
    旋转动画
    联动动画
  • 原文地址:https://www.cnblogs.com/taoshihan/p/14754887.html
Copyright © 2011-2022 走看看