前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go的数据类型-复合数据类型-struct(三)

go的数据类型-复合数据类型-struct(三)

原创
作者头像
堕落飞鸟
发布2023-04-19 21:36:58
1470
发布2023-04-19 21:36:58
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

嵌套结构体

在Go中,我们可以在结构体类型中嵌套其他结构体类型,从而创建更复杂的数据结构。嵌套结构体的定义方式与普通结构体类型相同,只需将另一个结构体类型的名称作为字段的类型即可。

以下是一个示例,其中定义了一个Address结构体类型,用于存储地址信息,另一个PersonWithAddress结构体类型,包含Person结构体和Address结构体:

代码语言:javascript
复制
type Address struct {
    City    string
    Country string
}

type PersonWithAddress struct {
    Person
    Address
}

在该示例中,PersonWithAddress结构体中包含了一个Person结构体和一个Address结构体。这样就可以通过一个变量来表示一个人的基本信息和地址信息。

我们可以使用以下代码来创建一个PersonWithAddress结构体类型的值:

代码语言:javascript
复制
personWithAddress := PersonWithAddress{
    Person: Person{Name: "Alice", Age: 32},
    Address: Address{City: "Beijing", Country: "China"},
}

这将创建一个名为personWithAddress的变量,并将其初始化为一个包含PersonAddress信息的结构体。

我们可以通过以下方式访问PersonWithAddress结构体类型的字段:

代码语言:javascript
复制
package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func (p Person) PrintInfo() {
    fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)
}

func (p *Person) SetAge(age int) {
    p.Age = age
}

type Address struct {
    City    string
    Country string
}

type PersonWithAddress struct {
    Person
    Address
}

func main() {
    person := Person{Name: "Alice", Age: 31}
    person.PrintInfo()
    person.SetAge(32)
    fmt.Printf("Name: %s, Age: %d\n", person.Name, person.Age)

    personWithAddress := PersonWithAddress{
        Person: Person{Name: "Alice", Age: 32},
        Address: Address{City: "Beijing", Country: "China"},
    }
    fmt.Printf("Name: %s, Age: %d, City: %s, Country: %s\n",
        personWithAddress.Person.Name,
        personWithAddress.Person.Age,
        personWithAddress.Address.City,
        personWithAddress.Address.Country)
}

输出结果:

代码语言:javascript
复制
Name: Alice, Age: 31
Name: Alice, Age: 32
Name: Alice, Age: 32, City: Beijing, Country: China

在这个示例中,我们首先定义了Person结构体类型,并定义了一个PrintInfo方法和一个SetAge方法,用于打印Person结构体类型的信息和设置Age字段的值。然后,我们定义了一个Address结构体类型,用于存储地址信息。最后,我们定义了一个PersonWithAddress结构体类型,它包含了Person结构体和Address结构体。

main函数中,我们首先创建一个Person结构体类型的值,并调用PrintInfo方法和SetAge方法来输出和修改Person结构体类型的信息。然后,我们创建一个PersonWithAddress结构体类型的值,并使用结构体字段的访问方式来输出PersonWithAddress结构体类型的信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 嵌套结构体
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com