前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言关于零值的定义

Golang语言关于零值的定义

作者头像
李海彬
发布2018-03-20 16:34:49
1.1K0
发布2018-03-20 16:34:49
举报
文章被收录于专栏:Golang语言社区

原文:https://golang.org/ref/spec#The_zero_value

The 零值

当一个变量或者新值被创建时, 如果没有为其明确指定初始值,go语言会自动初始化其值为此类型对应的零值, 各类型零值如下:

false : bool, 0: integer, 0.0: float, "": string, nil : pointer, function, interface, slice, channel, map 。对于复合类型, go语言会自动递归地将每一个元素初始化为其类型对应的零值。

比如:数组, 结构体 。

原文:

When storage is allocated for a variable, either through a declaration or a call of new, or when a new value is created, either through a composite literal or a call of make, and no explicit initialization is provided, the variable or value is given a default value. Each element of such a variable or value is set to the zero value for its type:false for booleans, 0 for integers, 0.0 for floats, "" for strings, and nil for pointers, functions, interfaces, slices, channels, and maps. This initialization is done recursively, so for instance each element of an array of structs will have its fields zeroed if no value is specified.

These two simple declarations are equivalent(以下两处声明是等价的):

代码语言:javascript
复制
var i int
var i int = 0

After

代码语言:javascript
复制
type T struct { i int; f float64; next *T }
t := new(T) //A

the following holds: //C

代码语言:javascript
复制
t.i == 0
t.f == 0.0
t.next == nil

The same would also be true after(注意:A与B两种变量创建方式,但是其每一个元素都被go自动初始化其类型对应零值, 等同于C)

代码语言:javascript
复制
var t T //B

nil 是专门为go语言的指针类型和引用类型准备的,这样好记,哈哈;最后提醒一句:go语言的数组和结构体可是值类型, 并非引用类型哟, 比如数组作为函数参数时,

因为是值类型, 所以要复制的哟, 如果数组中元素很多, 那复制代价就大了呢, 要注意呀!

注意: 我是C++菜鸟程序员, 一毕业入行就用C++多年, 能力不见得强, 但是养成了刨根的毛病, 程序写的好不好, 大面的东西大家都差不多,但对于这些细节的东西

往往不注意, 隐藏bug就多, go语言虽然以简洁易学强大得名,但是还是要细节上多注意, 以免掉坑。 好比C++指针零值:0, NULL, nullptr 就是其零值不统一,很容易出bug.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • The 零值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档