Go 结构体嵌套结构体切片
时间: 2023-10-11 20:10:53 浏览: 70
可以通过在结构体中嵌套一个结构体切片来实现,例如:
```go
type Person struct {
Name string
Age int
Address []Address
}
type Address struct {
Street string
City string
Country string
}
func main() {
p := Person{
Name: "John",
Age: 30,
Address: []Address{
{Street: "Main St", City: "New York", Country: "USA"},
{Street: "Oxford St", City: "London", Country: "UK"},
},
}
fmt.Println(p.Name)
fmt.Println(p.Address[0].Street)
fmt.Println(p.Address[1].City)
}
```
在上面的例子中,`Person` 结构体中嵌套了一个 `Address` 结构体的切片,每个 `Address` 结构体包含了街道,城市和国家信息。我们可以通过访问结构体的字段来访问嵌套的结构体和切片。
相关问题
go语言结构体
Go语言中的结构体是一种用户自定义的数据类型,用于封装不同类型的数据。结构体由一些字段组成,每个字段都有自己的名称和类型。
定义结构体的语法如下:
```go
type StructName struct {
field1 type1
field2 type2
...
}
```
其中,StructName是结构体的名称,field1、field2等是结构体中的字段名,type1、type2等是字段的数据类型。
例如,定义一个表示人的结构体:
```go
type Person struct {
name string
age int
gender string
}
```
此时,我们就可以创建一个Person类型的变量,并为其赋值:
```go
var p Person
p.name = "Tom"
p.age = 18
p.gender = "male"
```
也可以通过字面量的方式直接创建并初始化一个Person类型的变量:
```go
p := Person{name: "Tom", age: 18, gender: "male"}
```
结构体还可以嵌套其他结构体,以形成复杂的数据结构。例如,定义一个表示公司的结构体:
```go
type Company struct {
name string
address string
employees []Person
}
```
其中,employees字段是一个Person类型的切片,表示公司的所有员工。可以通过以下方式为其赋值:
```go
c := Company{
name: "ABC Company",
address: "123 Main St.",
employees: []Person{
{name: "Tom", age: 18, gender: "male"},
{name: "Jane", age: 25, gender: "female"},
},
}
```
阅读全文