13.5 复合字面量

复合字面量用于为数组、切片、Map和结构体构造新值。

每种字面量由相关类型名称和给定类型的一系列元素列表组成,这些元素列表由匹配的花括号({})括起来。

[3]int{1, 10, 100}          // 一个数组字面量,创建一个 3 个元素的数组,元素分别为 1、10 和 100。不需要明确指定元素的数量。例如,此字面量语法等价于 […​]int{1, 10, 100}
[]bool{true, false}         // 一个切片字面量,创建一个 2 个元素的切片,元素分别为 true 和 false。注意,用于表示切片的空方括号对
var x = map[string]int{}          // map 文本创建一个类型为 map[string]int 的空映射。此map值通过赋值分配给变量 x
type Location struct {
    Lat, Lon float64
}

var loc = Location{37.7, -122.4}      // 赋值语句的 RHS 上的表达式是一个结构文本,用于构造一个新的位置值,其中 Lat = 37.7 且 Lon = -122.4

每个元素前可以有一个对应的键。键被解释为:

  • 结构体字面量的字段名;

  • 数组和切片字面量的索引;

  • Map字面量的键。

例子:

[...]float32{0: 0.1, 1: 0.2}           // 具有两个元素的数组文本。此文本等效于 [2]float32{0.1, 0.2}
type Coordinate struct {
    X, Y uint
}

var position = Coordinate{X: 0, Y: 10}     // RHS 结构文字与 Coordinate{0, 10} 或 Coordinate{Y: 10, X: 0} 相同。 指定字段名称时,顺序不重要

对于Map文本量,所有元素都必须具有键

var pop = map[string]float32{       
    "New York City": 8.5,
    "Los Angeles": 4.0,
}

Map 字面量创建一个由 map[string]float32 类型的两个元素组成的新Map。此Map值通过赋值分配给变量弹出。pop 的类型是 map[string]float32。

最后更新于