在Go语言中,局部变量和全局变量的缺省值是什么?

在Go语言中,当你声明一个变量但没有给它赋值时,这个变量会被自动初始化为其类型的零值。这适用于全局变量和函数内的局部变量。

这是Go语言各种类型的零值:

  • 数值类型(intfloat32float64等)的零值是0
  • 布尔类型(bool)的零值是false
  • 字符串类型(string)的零值是空字符串""
  • 指针(*T)的零值是nil
  • 切片([]T)的零值是nil
  • 映射(map[T]T)的零值是nil
  • 函数类型的零值是nil
  • 接口类型的零值是nil
  • 通道类型(chan T)的零值是nil
  • 数组类型([N]T)的零值是所有元素都为零值的数组。
  • 结构体类型(struct)的零值是所有字段都为零值的结构体。

以下是一个例子,展示了Go语言的零值:

package main

import "fmt"

var globalInt int
var globalString string
var globalBool bool

func main() {
    var localFloat32 float32
    var localPointer *int

    fmt.Println(globalInt)        // 输出:0
    fmt.Println(globalString)     // 输出:""
    fmt.Println(globalBool)       // 输出:false
    fmt.Println(localFloat32)     // 输出:0
    fmt.Println(localPointer == nil) // 输出:true
}

在这个例子中,全局变量globalIntglobalStringglobalBool,以及局部变量localFloat32localPointer都没有被赋值,所以它们被自动初始化为各自类型的零值。

发表评论

后才能评论