在Go语言中,结构体(struct)是一种用户自定义的复合类型,可以包含多个不同类型的字段。结构体复合字面值(Struct Composite Literal)是一种创建结构体实例的语法,它可以在一个表达式中声明和初始化结构体的所有字段,类似于其他语言中的对象字面量或JSON对象。
结构体复合字面值使用大括号括起来,每个字段名和对应的值使用冒号分隔,多个字段之间使用逗号分隔。示例如下:
package mainimport "fmt"type Person struct {
Name string
Age int
Address string}func main() { // 使用结构体复合字面值创建Person实例
p := Person{
Name: "Alice",
Age: 25,
Address: "123 Main St.",
}
fmt.Println(p)
}在上面的代码中,我们定义了一个结构体类型Person,它包含三个字段Name、Age和Address。然后我们在main函数中使用结构体复合字面值创建了一个Person实例,并将其赋值给变量p。最后我们打印了p的值,输出为{Alice 25 123 Main St.}。
除了使用显式的字段名来初始化结构体的字段,我们还可以使用匿名字段的方式来初始化嵌套的结构体。示例如下:
package mainimport "fmt"type Address struct {
City string
State string}type Person struct {
Name string
Age int
Address Address
}func main() { // 使用结构体复合字面值创建Person实例,并初始化嵌套的Address结构体
p := Person{
Name: "Bob",
Age: 30,
Address: Address{
City: "New York",
State: "NY",
},
}
fmt.Println(p)
}在上面的代码中,我们定义了两个结构体类型Address和Person,Person结构体嵌套了Address结构体。然后我们在main函数中使用结构体复合字面值创建了一个Person实例,并初始化了其嵌套的Address结构体。最后我们打印了p的值,输出为{Bob 30 {New York NY}}。