在 Go 语言中,变量的初始化可以通过以下几种方法完成:
-
声明同时初始化:
在变量声明的同时进行初始化,可以直接指定变量的初始值。var num int = 42 var name string = "John" var isActive bool = true
-
短变量声明初始化:
使用短变量声明语法:=
可以在函数内部快速声明并初始化变量。num := 42 name := "John" isActive := true
-
初始化为零值:
在声明变量时,如果没有显式指定初始值,Go 语言会将变量初始化为其对应类型的零值。var num int // 初始值为 0 var name string // 初始值为空字符串 "" var isActive bool // 初始值为 false
-
使用
new
函数初始化:
new
函数用于在堆上动态分配内存,并将分配的内存初始化为零值,返回指向该内存的指针。ptrInt := new(int) // ptrInt 指向一个整数类型,其值为 0 ptrFloat := new(float64) // ptrFloat 指向一个浮点数类型,其值为 0.0
-
使用结构体字面量初始化:
对于自定义的结构体类型,可以使用结构体字面量的方式进行初始化。type Point struct { X int Y int } p := Point{X: 10, Y: 20} // 创建一个 Point 类型变量,并设置 X 和 Y 的初始值
-
使用切片、映射和通道的
make
函数初始化:
使用make
函数可以初始化切片、映射和通道,并设置它们的初始值。// 初始值为空的整数类型切片,长度为 5,容量为 10 slice := make([]int, 5, 10) // 初始值为空的整数类型映射 m := make(map[string]int) // 初始值为空的整数类型通道 ch := make(chan int)
-
使用数组字面量初始化数组:
对于数组,可以使用数组字面量来进行初始化,可以指定数组的每个元素的值。arr := [3]int{1, 2, 3} // 创建一个包含 3 个整数的数组,并设置初始值为 1, 2, 3