电商信息资讯,更全更新信息实报!
主页 > 动态 > > 正文

吴健:Go 语言中什么是零值?

来源:未知 发布时间:2020-11-11 17:25 标签:一个初始
浏览:

吴健:Go 语言中什么是零值?

  今天是《有个小问题》系列第一期,我们一起先来看看 Go 语言规范中关于零值的规定。

  当通过声明或调用 make 或 new 分配内存来存储一个值时,如果没有提供显式初始化,内存会被赋予一个默认的初始化。这种值的每一个元素都被设置为其类型的零值:布尔值为 false ,整数为 0 ,浮点数为 0.0 ,字符串为 "",指针、函数、接口、切片、 Channel 和 Map 为 nil 。这种初始化是以递归方式进行的,例如,如果没有指定值,结构数组中的每个元素的字段都会被清零。

  对于这种总是将一个值设置为已知默认值的属性对于程序的安全性和正确性是很重要的,同时也可以使程序看起来更简单、更紧凑。

  这就是 Go 编程者所说的 “给你的代码结构一个有用的零值”。

  下面是一个使用 sync.Mutex 的例子,它被设计成不需要显式初始化就可以使用。sync.Mutex 包含两个未导出的整数字段。由于这些字段将被设置为零值,每当声明 sync.Mutex 时,这些字段将被设置为 0。

  另一个有用的零值类型的例子是 bytes.Buffer。可以不进行显式初始化就开始读取或写入,请注意,io.Copy 需要一个 io.Reader 作为它的第二个参数,所以我们需要传递一个指向 b 的指针。

  对于切片来说它们的零值是 nil。这意味着你不需要显式地创建一个切片,你可以直接声明它。

  注意:var s []string 与上面两行注释类似,但不完全相同。这两种初始化切片零值还是有区别的。下面的代码输出 false

  nil 指针的零值还有一种比较实用的用法是,对具有 nil 值的类型调用方法,可以用来简单地提供默认值。

  关注博客看更多《有个小问题系列》


吴健:Go 语言中什么是零值?

上一篇:上一篇:乌格斯·马特尔:马云十大思想者是怎么回事?十

下一篇:下一篇:没有了

标签:一个初始

热门文章

  • 当今企业商城网站在建设的障碍
    当今企业商城网站在建设的障碍

    当今企业商城网站在建设的障碍

    McMore是数商云旗下品牌,专注于为企业提供专业的电子商务系统开发及电商解决方案服务 供需采购管理、招标集采、询盘问价、电子合同、订单管理及供应...

  • 直播与百亿补贴占据C位,淘宝加权“流量
    直播与百亿补贴占据C位,淘宝加权“流量

    直播与百亿补贴占据C位,淘宝加权“流量

    淘宝直播的一级入口位置上移,原本位于右排第一顺位的有好货则对应下调。受到调整的还有淘宝短视频内容最重要的入口哇哦视频,目前,其一级入口已...

  • 建设c2c商城网站,怎么才靠谱
    建设c2c商城网站,怎么才靠谱

    建设c2c商城网站,怎么才靠谱

    McMore是数商云旗下品牌,专注于为企业提供专业的电子商务系统开发及电商解决方案服务 供需采购管理、招标集采、询盘问价、电子合同、订单管理及供应...

  • 微信支付将多方面推动便利店数字化转型
    微信支付将多方面推动便利店数字化转型

    微信支付将多方面推动便利店数字化转型

    8月24日消息,在近期举行的2020中国便利店大会上,腾讯公司微信行业运营总监白振杰表示,微信支付将在运营、数据、渠道三方面推动便利店数字化转型,...

  • 四川省内江市与阿里巴巴签署数字经济建
    四川省内江市与阿里巴巴签署数字经济建

    四川省内江市与阿里巴巴签署数字经济建

    9月19日,四川省内江市宣布与阿里巴巴签署数字经济建设战略合作协议。双方将在数字政府、智慧城市、产业升级等方面合作,共建川南电商人才孵化基地...

人物

更多 >
  • 邱晔:虎号食是什么字
    邱晔:虎号食是什么字

    一、虎号食是饕,拼音tāo。二、释义:贪财;贪食:老~(贪食的人)。三、饕的部首:飠四、汉字结构:上下结构五、造字法:形声;从号、虎、食声六...

  • 薇拉贝儿:LOL中无双剑姬带什么技能,出
    薇拉贝儿:LOL中无双剑姬带什么技能,出

    剑姬马上就要改版了,如果你问的是现版本的剑姬的话,他的技能加点是主w副e有大点大最后升级q。装备的话九头蛇必出。其他的就视情况而定了。最后的...

人物赵婷婷:黑龙
人物谢欣颖:饥荒什么都可以种mod介绍
人物王子子:细数动漫中那些不穿“胖次”的
人物赵艺然:持续集成是什么?
人物肖顺尧:养花用什么土?教你十种营养土

专题

更多 >