为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Go 将值 0 返回给未赋值的整型变量?

为什么 Go 将值 0 返回给未赋值的整型变量?

Go
小唯快跑啊 2023-07-31 16:38:43
我被要求将整数类型的变量声明为:var someInteger int8后来当我打印这个变量时,它打印了 value 0。我的Go 程序如下所示:package mainimport "fmt"func main() {  var someInteger int  fmt.Println(someInteger)      // Prints 0 in terminal}我的问题是,因为我没有分配任何值,所以它应该返回一些像C这样的垃圾值,而不是像静态变量一样,它自动按值0初始化。
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

在 Go 中,您无法访问未初始化的变量/内存。如果不显式初始化变量,它将隐式初始化为其类型的零值。

规范:变量声明中对此进行了介绍

如果给出了表达式列表,则变量将使用遵循赋值规则的表达式进行初始化。否则,每个变量都被初始化为零值。

规范:变量中也提到:

如果尚未为变量赋值,则其值是其类型的零值。

没有显式初始值声明的变量将被赋予零值。


查看完整回答
反对 回复 2023-07-31
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

Go 通过根据变量的类型添加合理的默认值使这件事变得简单。例如:


var someInteger int8         // will print 0 as default

var someFloat float32        // will print 0 as default

var someString string        // will print nothing as it prints empty string

var someBoolean bool         // will print false as default

查看完整回答
反对 回复 2023-07-31
  • 2 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信