在编程中,字面量(literal)是指程序中直接使用的常量值或变量值,而不是通过变量、表达式或函数计算得出的值。在 Go 语言中,字面量通常用于表示字符串、数字、布尔值、数组、结构体等数据类型。
组合字面量(composite literal)则是一种特殊的字面量形式,它可以用于创建数组、切片、映射、结构体等复合类型的值。
下面是一些示例:
// 字符串字面量
str := "Hello, world!"
// 整数字面量
i := 42
// 布尔值字面量
b := true
// 数组字面量
arr := [3]int{1, 2, 3}
// 切片字面量
sli := []int{4, 5, 6}
// 映射字面量
m := map[string]int{"one": 1, "two": 2, "three": 3}
// 结构体字面量
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 18}
// 组合字面量
arr2 := [3]int{1, 2, 3}
sli2 := []int{4, 5, 6}
m2 := map[string]int{"one": 1, "two": 2, "three": 3}
p2 := Person{Name: "Alice", Age: 18}
// 通过组合字面量创建数组
arr3 := [...]int{1, 2, 3, 4, 5}
// 通过组合字面量创建切片
sli3 := []int{1, 2, 3, 4, 5}
// 通过组合字面量创建映射
m3 := map[string]int{
"one": 1,
"two": 2,
"three": 3,
}
// 通过组合字面量创建结构体
p3 := Person{
Name: "Alice",
Age: 18,
}
在上面的示例中,我们首先使用了一些字面量,例如字符串字面量、整数字面量、布尔值字面量等。然后,我们使用组合字面量创建了一些数组、切片、映射、结构体等复合类型的值。组合字面量的语法是在类型名后面加上一对花括号,花括号中是用逗号分隔的值列表,这些值将用于初始化该类型的值。组合字面量还可以指定某些元素的索引值,例如映射字面量中的键值对,结构体字面量中的字段等。