go语法:结构体嵌套

参考:

https://zhuanlan.zhihu.com/p/300992397(知乎go结构体)

https://studygolang.com/articles/11313 (go中文网)

匿名结构体和非匿名结构体

上代码:

复制代码
package main

import "fmt"

type info struct {
    addr string
    name string
}
type info2 struct {
    addr string
    name string
}
type user struct{
    id int32
    info //匿名:未指定字段名
    iii info2 //非匿名:指定字段名为iii
}

func (pInfo *info) printInfo()  {
    fmt.Println(pInfo)
}
func (pInfo *info2) printInfo2()  {
    fmt.Println(pInfo)
}
func (pUser * user) printUser(){
    fmt.Println(pUser)
}

func main(){
    u := user{
        id: 1,
        info:info{
            addr: "aaa",
            name:"babb",
        },
    }

    u.printInfo()//假如是匿名字段,go会进行方法提升,可以直接.出来
    u.printUser()
    u.iii.printInfo2()//假如指定了字段的命名,那调用相关函数就需要指定字段名才能调用了
    return
}
复制代码

匿名结构体与父级结构体字段同名

上代码

复制代码
type Info struct {
    sex int
    name string
    age int
    address string
}

type User struct{
    like string
    sex int
    Info
}

user:=User{}
user.sex=1//这里修改的外部结构User里面的sex字段值
user.Info.sex=2//这里修改的是嵌入结构Info的sex字段值
复制代码

 

posted @   指令跳动  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示