golang结构体匿名字段(Golang 覆盖结构体)

什么是golang结构体匿名字段

在golang中,结构体是一种非常重要的数据类型,它由一组具有相同或不同类型的命名字段组成。在结构体中,若字段没有名字,只有类型,则称之为匿名字段,也称为嵌入字段。

golang结构体匿名字段的语法

golang结构体匿名字段的语法十分简单,只需要在定义结构体的时候,在字段的类型处加上括号即可。

type Person struct {
    Name      string
    Age       int
    Address   Address `json:"address"`
    Anonymous struct {
        Id     string
        Gender string
    }
}

在上面的代码中,Anonymous字段为匿名字段,它的类型是一个内嵌的结构体,该内嵌结构体包括Id和Gender两个字段。

golang结构体匿名字段的用法

golang结构体匿名字段的用法十分灵活,它可以很方便地实现结构体的组合,让代码更简洁。

首先,由于匿名字段没有名字,所以可以直接访问它内部的字段。

func main() {
    person := Person{
        Name: "Lucy",
        Age:  18,
        Anonymous: struct {
            Id     string
            Gender string
        }{
            Id:     "1001",
            Gender: "female",
        },
    }
    fmt.Println(person.Id) // 直接访问匿名字段内部的字段
}

其次,当结构体中的两个字段名相同时,可以通过匿名字段快速实现融合。

type Address struct {
    Province string
    City     string
}

type Person struct {
    Name    string
    Age     int
    Address // 匿名字段可以直接访问内部字段
}

func main() {
    p := Person{
        Name: "Lucy",
        Age:  18,
        Address: Address{
            Province: "广东",
            City:     "深圳",
        },
    }
    fmt.Println(p.Province, p.City) // 直接访问嵌入的Address结构体内部字段
}

上述代码中,Address为Person结构体的匿名字段,直接访问了嵌入的Address结构体内部的Province和City字段。

综上所述,golang结构体匿名字段可以用于实现结构体的组合,使代码更加简洁,开发者可以根据具体业务场景选择是否使用匿名字段。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/golang-q4.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年5月2日 上午4:07
下一篇 2023年5月2日 上午4:07

猜你喜欢