兄弟连go教程(19)数据 - ⾯面向对象

23 篇文章 1 订阅

⾯面向对象三⼤大特征⾥里,Go 仅⽀支持封装,尽管匿名字段的内存布局和⾏行为类似继承。没有
class 关键字,没有继承、多态等等。
type User struct {
id int
name string
}
type Manager struct {
User
title string

}
m := Manager{User{1, "Tom"}, "Administrator"}
// var u User = m // Error: cannot use m (type Manager) as type User in assignment
// 没有继承,⾃自然也不会有多态。
var u User = m.User // 同类型拷⻉贝。
内存布局和 C struct 相同,没有任何附加的 object 信息。
|<-------- User:24 ------->|<-- title:16 -->|
+--------+-----------+------------+ +---------------+
m | 1 | string | string | | Administrator | [n]byte
+--------+-----------+------------+ +---------------+
| | |
| +--->>>------------------->>>--------+
|
+--->>>----------------------------------->>>-----+
|
+--->>>----------------------------------->>>-+ |
| | |
+--------+-----------+ +---------+
u | 1 | string | | Tom | [n]byte
+--------+-----------+ +---------+
|<- id:8 -->|<- name:16 -->|


可⽤用 unsafe 包相关函数输出内存地址信息。
m : 0x2102271b0, size: 40, align: 8
m.id : 0x2102271b0, offset: 0
m.name : 0x2102271b8, offset: 8
m.title: 0x2102271c8, offset: 24

尹成老师

QQ77025077 

微信18510341407

所有视频在尹成学院

www.yinchengxueyuan.com

尹成百度云请联系QQ475318423


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值