Go语言中变量初始化的所有方式

Jicheng's Blog / 2023-07-25 / 原文

在 Go 语言中,变量的初始化可以通过以下几种方法完成:

  1. 声明同时初始化:
    在变量声明的同时进行初始化,可以直接指定变量的初始值。

    var num int = 42
    var name string = "John"
    var isActive bool = true
    
  2. 短变量声明初始化:
    使用短变量声明语法 := 可以在函数内部快速声明并初始化变量。

    num := 42
    name := "John"
    isActive := true
    
  3. 初始化为零值:
    在声明变量时,如果没有显式指定初始值,Go 语言会将变量初始化为其对应类型的零值。

    var num int // 初始值为 0
    var name string // 初始值为空字符串 ""
    var isActive bool // 初始值为 false
    
  4. 使用 new 函数初始化:
    new 函数用于在堆上动态分配内存,并将分配的内存初始化为零值,返回指向该内存的指针。

    ptrInt := new(int) // ptrInt 指向一个整数类型,其值为 0
    ptrFloat := new(float64) // ptrFloat 指向一个浮点数类型,其值为 0.0
    
  5. 使用结构体字面量初始化:
    对于自定义的结构体类型,可以使用结构体字面量的方式进行初始化。

    type Point struct {
        X int
        Y int
    }
    
    p := Point{X: 10, Y: 20} // 创建一个 Point 类型变量,并设置 X 和 Y 的初始值
    
  6. 使用切片、映射和通道的 make 函数初始化:
    使用 make 函数可以初始化切片、映射和通道,并设置它们的初始值。

    // 初始值为空的整数类型切片,长度为 5,容量为 10
    slice := make([]int, 5, 10)
    
    // 初始值为空的整数类型映射
    m := make(map[string]int)
    
    // 初始值为空的整数类型通道
    ch := make(chan int)
    
  7. 使用数组字面量初始化数组:
    对于数组,可以使用数组字面量来进行初始化,可以指定数组的每个元素的值。

    arr := [3]int{1, 2, 3} // 创建一个包含 3 个整数的数组,并设置初始值为 1, 2, 3