首页IT科技结构体里面嵌套结构体代码(Go 快速入门指南 – 嵌套结构体)

结构体里面嵌套结构体代码(Go 快速入门指南 – 嵌套结构体)

时间2025-05-05 16:05:58分类IT科技浏览3510
导读:概述 Go 支持将多个结构体通过嵌套的方式,组成一个大的结构体,降低了单个结构体复杂度,同时提高了结构体之间组合的灵活性。...

概述

Go 支持将多个结构体通过嵌套的方式          ,组成一个大的结构体                ,降低了单个结构体复杂度     ,同时提高了结构体之间组合的灵活性          。

例子

为了省略篇幅          ,本小节只使用字面量方式初始化                ,new()的初始化方式请参照结构体小节                。

每个结构体单独初始化     ,最后组装

packagemain import( "fmt" ) typepersonstruct{ namestring ageint16 hobby profession address } typehobbystruct{ values[]string } typeprofessionstruct{ descstring } typeaddressstruct{ telstring areastring } funcmain(){ //这里使用单个字符作为变量名称     ,仅仅是为了演示                ,实际开发中要遵守命名规范 h:=hobby{ values:[]string{"读书","羽毛球","电影"}, } p:=profession{ desc:"学生", } a:=address{ tel:"123-456789", area:"XX小区1栋2单元304", } li:=person{ name:"小李", age:12, hobby:h, profession:p, address:a, } fmt.Printf("姓名:%s\n年龄:%d\n职业:%s\n爱好:%v\n电话:%s\n住址:%s\n", li.name,li.age,li.profession.desc,li.hobby.values,li.address.tel,li.area) //其中           ,嵌套的字段名可以省略 fmt.Println("\n省略掉嵌套的字段名     ,打印结果一样\n") fmt.Printf("姓名:%s\n年龄:%d\n职业:%s\n爱好:%v\n电话:%s\n住址:%s\n", li.name,li.age,li.desc,li.values,li.tel,li.area) } //$gorunmain.go //输出如下 /** 姓名:小李 年龄:12 职业:学生 爱好:[读书羽毛球电影] 电话:123-456789 住址:XX小区1栋2单元304 省略掉嵌套的字段名               ,打印结果一样 姓名:小李 年龄:12 职业:学生 爱好:[读书羽毛球电影] 电话:123-456789 住址:XX小区1栋2单元304 */

整个结构体初始化

packagemain import( "fmt" ) typepersonstruct{ namestring ageint16 hobby profession address } typehobbystruct{ values[]string } typeprofessionstruct{ descstring } typeaddressstruct{ telstring areastring } funcmain(){ li:=person{ name:"小李", age:12, hobby:hobby{ values:[]string{"读书","羽毛球","电影"}, }, profession:profession{ desc:"学生", }, address:address{ tel:"123-456789", area:"XX小区1栋2单元304", }, } fmt.Printf("姓名:%s\n年龄:%d\n职业:%s\n爱好:%v\n电话:%s\n住址:%s\n", li.name,li.age,li.desc,li.values,li.tel,li.area) } //$gorunmain.go //输出如下 /** 姓名:小李 年龄:12 职业:学生 爱好:[读书羽毛球电影] 电话:123-456789 住址:XX小区1栋2单元304 */

打印结构体

packagemain import( "fmt" ) typepersonstruct{ namestring ageint16 hobby profession address } typehobbystruct{ values[]string } typeprofessionstruct{ descstring } typeaddressstruct{ telstring areastring } funcmain(){ li:=person{ name:"小李", age:12, hobby:hobby{ values:[]string{"读书","羽毛球","电影"}, }, profession:profession{ desc:"学生", }, address:address{ tel:"123-456789", area:"XX小区1栋2单元304", }, } fmt.Println("默认打印输出如下") fmt.Println(li) fmt.Println("打印时加上字段名") fmt.Printf("%+v\n",li) fmt.Println("打印时加上嵌套字段名") fmt.Printf("%#v\n",li) } //$gorunmain.go //输出如下 /** 默认打印输出如下 {小李12{[读书羽毛球电影]}{学生}{123-456789XX小区12单元304}} 打印时加上字段名 {name:小李age:12hobby:{values:[读书羽毛球电影]}profession:{desc:学生}address:{tel:123-456789area:XX小区12单元304}} 打印时加上嵌套字段名 main.person{name:"小李",age:12,hobby:main.hobby{values:[]string{"读书","羽毛球","电影"}},profession:main.profession{desc:"学生"},address:main.address{tel:"123-456789",area:"XX小区1栋2单元304"}} */

扩展阅读

1.为什么有“组合优于继承           ”的说法 - 知乎 (https://www.zhihu.com/question/21862257)

联系我

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
static method python(在python中调用staticmethod用到参数)