golang结构体匿名字段的妙用

先看一段简单的代码:

package main

import (
	"fmt"
)

type A struct {
	B
	m int
}

type B struct {
	n int
}

func (b *B) my_print() {
	fmt.Printf("print B.n=%d\n", b.n)
}

func main() {
	a := &A{B{2}, 3}
	fmt.Printf("A.n=%d, A.m=%d\n", a.n, a.m)
	a.my_print()
}

执行结果:

D:/PROGRAM/Golang/src/study/anonymous_struct/anonymous_struct.exe  [D:/PROGRAM/Golang/src/study/anonymous_struct]
A.n=2, A.m=3
print B.n=2
成功: 进程退出代码 0.

如上述所示,B是结构体A的匿名字段;所以B的成员n对于结构体A来说相当于是A自己的成员变量a.n,而且,B的方法也是A的方法, a.my_print()。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值