猿问

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

我被要求将整数类型的变量声明为:


var someInteger int8

后来当我打印这个变量时,它打印了 value 0。


我的Go 程序如下所示:


package main


import "fmt"


func main() {

  var someInteger int

  fmt.Println(someInteger)      // Prints 0 in terminal

}

我的问题是,因为我没有分配任何值,所以它应该返回一些像C这样的垃圾值,而不是像静态变量一样,它自动按值0初始化。


小唯快跑啊
浏览 120回答 2
2回答

慕村225694

在 Go 中,您无法访问未初始化的变量/内存。如果不显式初始化变量,它将隐式初始化为其类型的零值。规范:变量声明中对此进行了介绍:如果给出了表达式列表,则变量将使用遵循赋值规则的表达式进行初始化。否则,每个变量都被初始化为零值。规范:变量中也提到:如果尚未为变量赋值,则其值是其类型的零值。没有显式初始值声明的变量将被赋予零值。

收到一只叮咚

Go 通过根据变量的类型添加合理的默认值使这件事变得简单。例如:var someInteger int8         // will print 0 as defaultvar someFloat float32        // will print 0 as defaultvar someString string        // will print nothing as it prints empty stringvar someBoolean bool         // will print false as default
随时随地看视频慕课网APP

相关分类

Go
我要回答