struct的匿名用法详解

本文深入探讨了Go语言中匿名字段的使用方法,通过具体的代码示例展示了如何利用匿名字段简化结构体定义,以及如何访问和修改匿名字段中的属性。

Go只提供类型而不用写字段名的方式,也就是匿名字段,也称为嵌入字段。

当匿名字段是一个struct的时候,那么这个struct所拥有的全部字段都被隐式地引入了当前定义的这个struct。

举个例子,看实例可以更具体化理解:

package main
import "fmt"

type Person struct {
    name string
    age int
    weight int
}

type Student struct {
    Person  // 匿名字段,那么默认Student就包含了Person的所有字段
    speciality string
}

func main() {

    mark := Student{Person{"乔峰", 25, 120}, "擒龙手"}// 初始化一个学生

    // 访问相应的字段
    fmt.Println("名字是", mark.name)
    fmt.Println("年龄是 ", mark.age)
    fmt.Println("体重是 ", mark.weight)
    fmt.Println("技能是", mark.speciality)
    // 修改对应的技能信息
    mark.speciality = "降龙十八掌"
    fmt.Println("技能更新升级")
    fmt.Println("新技能是 ", mark.speciality)
    // 修改他的年龄信息
    mark.age = 36
    fmt.Println("现在的年龄是", mark.age)
    // 修改他的体重信息
    mark.weight += 30
    fmt.Println("现在的体重是", mark.weight)
}

通常struct定义的时候是字段名与其类型一一对应,上面通过匿名引用的方式而无需声明字段名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值