在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}}
。