标签搜索
MemoryCloud Blog

结构体嵌套

kennedy
2023-10-31 / 0 评论 / 18 阅读 / 正在检测是否收录...

结构体嵌套

type Person struct {
    name string
    age  int
}
type Student struct {
    p     Person  //结构体类型
    score float32
}

func main() {
    s := Student{
        Person{
            "wang", 19,
        },
        29,
    }
    fmt.Println(s.p, s.score)
}//s.p.name
{wang 19} 29

匿名嵌套

s.==p==.name 想不走p类型直接取到p的成员变量

type Student struct {
    Person  //不写成员变量名字
    score float32
}

func main() {
    s := Student{
        Person{
            "wang", 19,
        },
        29,
    }
    fmt.Println(s.name, s.age) //直接取到Person成员
}
wang 19

嵌套内部相同的变量名优先级小于嵌套外部

type Person struct {
    name string
    age  int
}
type Student struct {
    Person
    name string
}

func main() {
    s := Student{
        Person{
            "wang", 19,
        },
        "tao",
    }
    fmt.Println(s.name)
}
tao

对相同名字的变量赋值或操作 优先使用的是外部结构体的变量。

0

评论

博主关闭了所有页面的评论