Go 复合字面值
在Go语言中,复合字面值(Composite Literals)是一种用于初始化复杂数据结构的语法。它们允许你以一种简洁的方式创建数组、切片、映射和结构体等类型的实例。对于初学者来说,理解复合字面值是掌握Go语言数据结构的关键一步。
什么是复合字面值?
复合字面值是一种语法结构,用于在代码中直接创建并初始化复杂的数据类型。它们通常用于初始化数组、切片、映射和结构体等类型。复合字面值的语法形式如下:
Type{Value1, Value2, ..., ValueN}
其中,Type
是你要初始化的数据类型,Value1
到 ValueN
是该类型的初始值。
复合字面值的基本用法
1. 数组的复合字面值
数组是一种固定长度的数据结构。你可以使用复合字面值来初始化数组:
arr := [3]int{1, 2, 3}
fmt.Println(arr) // 输出: [1 2 3]
在这个例子中,我们创建了一个长度为3的整数数组,并使用复合字面值 {1, 2, 3}
来初始化它。
2. 切片的复合字面值
切片是一种动态长度的数据结构。你可以使用复合字面值来初始化切片:
slice := []int{1, 2, 3}
fmt.Println(slice) // 输出: [1 2 3]
与数组不同,切片的长度是动态的,因此你不需要指定长度。
3. 映射的复合字面值
映射是一种键值对的数据结构。你可以使用复合字面值来初始化映射:
m := map[string]int{
"apple": 1,
"banana": 2,
"cherry": 3,
}
fmt.Println(m) // 输出: map[apple:1 banana:2 cherry:3]
在这个例子中,我们创建了一个映射,其中键是字符串类型,值是整数类型。
4. 结构体的复合字面值
结构体是一种自定义的数据类型,可以包含多个字段。你可以使用复合字面值来初始化结构体:
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 30}
fmt.Println(p) // 输出: {Alice 30}
在这个例子中,我们创建了一个 Person
结构体,并使用复合字面值 {Name: "Alice", Age: 30}
来初始化它。