最新要闻
- 环球微资讯!绝无系统广告!蔚来手机真机曝光:神似索尼
- 每日看点!比亚迪F品牌越野SUV谍照曝光:对标奔驰大G 价格40万起
- 每天少睡一两个小时算熬夜?专家提醒:大脑会变笨
- A4车主免费变成“A5”车主?奥迪做出重大决定
- 委员建议在农村淘汰老头乐!推广更好的新能源汽车
- 【热闻】在2020年JD Power CSI墨西哥研究中 雪佛兰低于平均水平
- 每日动态!国内油价仍在上行区间 下一轮预计涨0.07-0.08元/升
- 每日短讯:世界最长寿女性去世 享年128岁:经历两次世界大战、全球大流行病
- 焦点速读:回头率爆表!闹市试驾哪吒S:20万级最吸引人的轿跑
- 报复性消费来了 2023年快递突破200亿件 百亿件仅28天
- 今日热搜:上大教授蔡传兵:室温超导距离实际应用还很遥远
- 世界头条:《洋葱》原唱_洋葱歌曲原唱
- 环球微资讯!多地或迎来30℃的“春天”:今夏是否会遭遇极端高温?专家回应
- 每日热讯!宜家储物柜竟成网红打卡地 上海宜家禁止在仓库拍照
- 每日消息!农民工大哥火车上用盆炫10袋泡面 饭量让网友惊叹:干活能吃更多
- 环球观焦点:海尔为何能反超格力
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
GO语言学习笔记-方法篇 Study for Go ! Chapter five - Method
持续更新 Go 语言学习进度中 ......
(资料图片仅供参考)
- GO语言学习笔记-类型篇 Study for Go! Chapter one - Type - slowlydance2me - 博客园 (cnblogs.com)
- GO语言学习笔记-表达式篇 Study for Go ! Chapter two - Expression - slowlydance2me - 博客园 (cnblogs.com)
- GO语言学习笔记-函数篇 Study for Go ! Chapter three - Function - slowlydance2me - 博客园 (cnblogs.com)
2023-03-09
Study for Go ! Chapter five - Method
1. Initialization
方法是与对象实例绑定特殊函数
方法是面向对象编程的基本概念,用于维护和展示对象的自身状态。
对象是内敛的,每个实例都有各自不同的独立特征,以属性和方法来暴露对外通信接口
普通函数则专注于算法流程,通过接受参数来完成特定逻辑运算,并返回最终结果。
方法是有关联状态的,而函数则通常没有
方法和函数定义语法区别在于前者有前置实例接受函数 ( receiver ),编译器以此确定方法所属类型。
在某些语言里,尽管没有显式定义,但会在调用时隐式传递 this 实例参数
可以为当前包,以及除接口和指针以外的任何类型定义方法
方法同样不支持重载 (overload),receiver 参数名没有限制,按惯例会选用简短有意义的名称(不推荐使用 this、self)
如方法内部并不引用实例,可省略参数名,仅保留类型
方法可以看作特殊的函数,那么 receiver 的类型自然可以是基础类型或指针类型。这会关系到调用时对象实例是否被复制
可使用实例值或指针调用方法,编译器会根据方法 receiver 类型自动在基础类型和指针类型间转换
不能使用多级指针调用方法
指针类型的 receiver 必须是合法指针 (包括 nil ),或能获取实例地址
How to choice receiver type ?
要修改实例状态,用 *T
无需修改状态的小对象或固定值,建议用 T
大对象建议用 *T,以减少复制成本
引用类型、字符串、函数等指针包装对象,直接用 T
若包含 Mutex 等同步手段,用 *T 避免因复制造成锁操作无效
其他无法确定的情况都用 *T
2. 匿名字段
可以像访问匿名字段成员那样调用其方法,由编译器负责查找
方法也会有同名遮蔽问题,但利用这种特性,可实现类似覆盖(override)操作
尽管能直接访问匿名字段的成员和方法,但它们依然不属于继承关系
3. 方法集
类型有一个与之相关的方法集 ( method set),这决定了它是否实现某个接口
类型 T 方法集包含所有 receiver T 方法
类型 *T 方法集包含所有 receiver T + *T 方法
匿名嵌入 S,T 方法包含所有 receiver S 方法
匿名嵌入 * S,T 方法集包含所有 receiver S + *S方法
匿名嵌入 S 或 *S, *T 方法集包含所有 receiver S + *S 方法
可利用反射 ( reflect )测试这些规则
方法集仅影响接口实现和方法表达式转换,与通过实例或实例指针调用方法无关。
实例并不使用方法集而是直接调用
匿名字段就是为方法集准备的,否则完全没必要为少写个字段名而大费周章
Attention
面向对象的三大特征 “ 封装 ”、“ 继承 ” 和 “ 多态 ”,golang 仅实现了部分特征,它更倾向于“组合优于继承” 的这种思想。将模块分解成相互独立的更小单元,分别处理不同方面的需求,最后以匿名嵌入的方式组合到一起,共同实现对外接口,而且其简短一致的调用方法,更是隐藏了内部实现细节
组合 没有父子依赖,不会破坏封装,且整体和局部松耦合,可任意增加来实现扩展,各单元持有单一职责,互无关联,实现和维护更加简单
尽管接口也是多态的一种实现方式,但其应该和基于继承体系的多态分离开来
4. expression
方法和函数一样,除直接调用外,还可以赋值给变量,或作为参数传递,依照具体引用方式的不同,可分为 expression 和 value 两种状态
Method Expression
通过类型引用的 method expression 会被还原为普通函数样式,receiver 是第一参数,调用时须显式传参,至于类型,可以是 T 或 *T,只要目标方法存在于该类型方法集中即可
当然也可以以表达式方法调用
Method Expression
基于实例或指针引用的 method value,参数签名不会改变,依旧按正常方式调用
但当 method value 被赋值给变量或作为参数传递时,会立即计算并赋值该方法执行所须的 receiver 对象,与其绑定,以便在稍后执行时,能隐式传入 receiver 参数
编译器会为 method value 生成一个包装函数,实现间接调用,至于 receiver 复制,和闭包的实现方法基本相同,打包成 funcval,经由 DX 寄存器传递
当 method value 作为参数时,会复制含 receiver 在内的整个 method value
当然如果目标方法的 receiver 时指针类型,那么被复制的仅是指针
只要 receiver 的参数类型正确,使用 nil 同样可以执行
关键词:
-
IM通讯协议专题学习(六):手把手教你如何在Android上从零使用Protobuf
本文基于我对Protobuf在Android端的实际使用心得,手把手教你如何在Android端IM产品中使用Protobuf,希望对你有帮助。
来源: -
GO语言学习笔记-方法篇 Study for Go ! Chapter five - Method
持续更新Go语言学习进度中 GO语言学习笔记-类型篇StudyforGo!Chapterone-Type-slowlydance2me-博客园(cnblogs
来源: IM通讯协议专题学习(六):手把手教你如何在Android上从零使用Protobuf
GO语言学习笔记-方法篇 Study for Go ! Chapter five - Method
每日看点!面试被问到了解哪些开发模型?看这一篇就够了!
热键是什么意思?热键冲突怎么解决?
微信怎么群发消息?微信怎么分组管理好友?
环球微资讯!绝无系统广告!蔚来手机真机曝光:神似索尼
每日看点!比亚迪F品牌越野SUV谍照曝光:对标奔驰大G 价格40万起
每天少睡一两个小时算熬夜?专家提醒:大脑会变笨
A4车主免费变成“A5”车主?奥迪做出重大决定
委员建议在农村淘汰老头乐!推广更好的新能源汽车
qq拍一拍怎么设置?qq拍一拍怎么撤回?
三星n7108d能升级到什么版本?三星N7108D手机参数
springboot~ConditionalOnProperty注解的使用
环球信息:给C#auto属性一个初始值的最佳方法是什么?
当前报道:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(java解题)
【热闻】在2020年JD Power CSI墨西哥研究中 雪佛兰低于平均水平
每日动态!国内油价仍在上行区间 下一轮预计涨0.07-0.08元/升
每日短讯:世界最长寿女性去世 享年128岁:经历两次世界大战、全球大流行病
焦点速读:回头率爆表!闹市试驾哪吒S:20万级最吸引人的轿跑
报复性消费来了 2023年快递突破200亿件 百亿件仅28天
今日热搜:上大教授蔡传兵:室温超导距离实际应用还很遥远
世界头条:《洋葱》原唱_洋葱歌曲原唱
世界即时看!10Wqps评论中台,如何架构?B站是这么做的!!!
简讯:前端设计模式——中介者模式
全球今日报丨Typora语法
Linux 中如何开启端口
环球微资讯!多地或迎来30℃的“春天”:今夏是否会遭遇极端高温?专家回应
每日热讯!宜家储物柜竟成网红打卡地 上海宜家禁止在仓库拍照
每日消息!农民工大哥火车上用盆炫10袋泡面 饭量让网友惊叹:干活能吃更多
环球观焦点:海尔为何能反超格力
天天快消息!微软坚信Switch可原生运行《使命召唤》:没有理由不能优化
环球快播:Kubernetes 的 HPA 原理详解
世界热资讯!当我把ChatGPT拉进群聊里,我的朋友都玩疯了
NTP校时服务器(时钟服务器)在安防监控系统里的重要性
天天新动态:以宿主机用户身份运行Docker容器
环球讯息:配置中心 | .NET 集成 Nacos 配置中心
3月9日生意社DBP基准价为9475.00元/吨
环球今头条!中核首席专家:人造太阳有望在30年后实现供能 核聚变商用
【天天报资讯】有你在的城市吗?中国“民富”50城:沪京苏杭位列前4 长三角仍是最富庶地区
0.536秒!清华学子拍到中国空间站凌月 画面震撼:网友为中国航天点赞
每日讯息!15年耗费万亿日元 日本国产飞机梦碎:原型机被拆解
【全球新视野】夫妻200万造别墅找陌生人抱团养老 每月1500元 网友并不看好
世界观天下!湖北现购车狂潮 东风系最高降9万遭疯抢 乘联会:其他省份或效仿
全球播报:专家权威点评比亚迪CTB技术:刀片与车身完美结合 只能在比亚迪才能实现
天天亮点!促销潮蔓延 汽车全面降价已来临?比亚迪或是最大功臣!
前沿资讯!怎么做才能不丢消息?
世界快看:读Java性能权威指南(第2版)笔记11_堆内存上
当前时讯:新生儿史低 日本恐将不复存在:工业正在崩溃边缘
每日消息!湖北现购车狂潮:最高发9万元补贴 12万买合资B级车
云计算的历史演进
狗屁不通文章生成器在线网页版 (2023年最新)
当前时讯:1万元!TP-Link发布Wi-Fi 7挖矿路由器:比RTX 4090快得多
世界今热点:2岁娃总发烧咳嗽 一查肺里有个洞:8个月前嗑南瓜子 壳进入肺部
非洲部落活人献祭的食人树:真的存在吗?
热文:有人在《绝地求生》里把炸弹扔了2000米远!还没开挂
世界热门:《星空》确定延期至9月6日发售 直面会6月11日举行
四川雅安旅游景点 四川雅安有哪些好玩的地方
盐山县聚成管道防腐保温厂
青岛西海岸新区2023年第一批产权型人才住房项目配售条件
【世界新视野】认养大熊猫1年10万终身100万:成龙认养了2只
岚图CEO讽刺路虎汽车抄袭:我们鼓励原创
世界焦点!类魂游戏《卧龙:苍天陨落》10场最难BOSS战:吕布让玩家绝望
环球消息!0.vim常用命令
【C++】购书系统问题测试&功能补充
环球热门:Celery框架的基本使用与介绍
班主任请全班女生喝奶茶:高考前还要请学生吃寓意为“高中”粽子
当前资讯!空乘招聘排队7小时面试3分钟 空姐空少挤满现场:有航空公司给年薪33万
通用表表达式
【全球独家】关于docker镜像IMAGE的备份和还原操作
【世界新要闻】七彩虹进军元宇宙!推出首款免费NFT、神秘实体权益
每日简讯:14.5英寸杜比视界大屏!联想拯救者Y900屏幕参数公布
张颂文回应沙漠捡垃圾被剧组丢下:临时租车司机行为
【独家焦点】三星Galaxy Tab S9系列平板曝光:Ultra机型首上IP67防尘防水
天天通讯!女足U20国青6-0横扫菲律宾,一场大胜,往往只需要简单的战术
世界即时看!匈牙利舞曲第五号_匈牙利舞曲
2月汽车销量前8名油车仅剩2个 比亚迪宋力压特斯拉Model Y
每日速递:1100万元的捐赠没给 中国矿业大学起诉90后校友
东北大熊猫着急下班 哐哐敲铁门:网友心酸想起在美丫丫 蜂花将认养?
世界观点:民族品牌蜂花将认养大熊猫丫丫 官方回应属实:加快与美国办理手续
Android 14首个公测版要来!Google I/O 2023定档5月10日
全球速讯:内网穿透的高性能的反向代理应用FRP-自定义404错误页【实践可行版】
明解Redis(一)概述
环球要闻:AMD狂堆缓存!锐龙9 7950X3D游戏性能遥遥领先
天天最新:核聚变之后 美国团队宣布突破常温超导技术:颠覆物理学
天天快看点丨国内手游一哥出海!腾讯《王者荣耀》正式于巴西上线
【环球热闻】日本双胞胎姐妹身高相差75厘米 获吉尼斯纪录认证
提升国民平均寿命25岁?创维汽车:让每位车主实现基本百岁人生
全球微速讯:Node 非服务脚本调试
分享一个可以早点下班的开发小技巧
【环球报资讯】SpringBoot启动控制台的banner是怎么回事
环球新资讯:AppUploader教程:如何注册账号并激活AppUploader
全球快看点丨Android工程接入UnityLibrary工程
【聚看点】存储一哥扛不住了!三星在售最旗舰SSD 990 PRO降至史低价
天天速看:15万买特斯拉 那得多“毛坯”?成本降50%是文字游戏
原生PCIe 5.0更安全!酷冷至尊GX1250 GOLD电源评测:满载电压偏移<0.1%
环球今热点:不再烧主板!ROG 2023系列内置环境光传感器:见光自动断电
索尼PS中国发文祝4位游戏女角节日快乐:蒂法、希里等出镜
全球微头条丨潍坊市寒亭区举行庆“三八”专场招聘会
k8s-安全机制
Docker全家桶入门到进阶教程,Docker快速上手