设为首页
收藏本站
开启辅助访问
全部
问与答
创意
技术
酷工作
生活
交易
资源
节点
飞墙
Follow
明白贴
人人影库
报酬
登录
注册
飞社-令人惊奇的创意工作者社区-
›
首页
›
Go 编程语言
›
被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒 ...
FSHEX=FIND+SHARE+EXPRESS
飞社-令人惊奇的创意工作者社区- 是一个关于发现分享表达的地方
现在登录
没有账号?
立即注册
推荐主题
›
31 岁了,是在银行继续苟着,还是富贵险中
›
媳妇被单方面解除劳动合同,这种情况下仲裁
›
一个人 4 个月开发了 29 款在线工具,大家
›
大家一直说安卓不出直屏、小屏,现在 OPPO
›
拼音缩写字段真是给我整无奈了
今日热议主题
湖北电信 IPV6 不可达 超时
[Fwd Chat Bot] 多语言支持的 telegram 私
北京移动的 PON 专线,有大神用过么?
[杭州] 出两个 M93P 改的软路由:四代 i5、
[广州/海外运营 ] 国内领先的 Web3 AI 公司
有没有玩黑威联通的
关于工资收入方面扣税的问题?
万一失业,你们的积蓄可以撑多久?
湖北宽带难友,投诉运营商交流群
有没有什么虚拟卡可以薅的服务
显示全部
|
最新评论
31 条回复
·
3469 次点击
11#
to2false
小成
2024-12-6 13:34:18
proto 生成的是 interface 自己实现这个 interface 不就好了
12#
assiadamo
楼主
小成
2024-12-6 13:37:26
@NessajCN 这就是想要做到的魔法
13#
assiadamo
楼主
小成
2024-12-6 13:41:02
@to2false Go 的 interface 不能放成员变量就很可惜,比如协议内数据定义,Decode/Encode 相关的代码都不想出现在业务层,要想用 interface 就要再搞个 BaseEcho 之类的组合,还是觉得有点丑
14#
NessajCN
小成
2024-12-6 13:41:02
@assiadamo 所以你的意思让框架猜你的业务逻辑?
15#
assiadamo
楼主
小成
2024-12-6 13:45:54
@NessajCN Java 有注解和字节码替换,可以批量的处理一系列相同定义的东西,但 Go 如果没有相关的魔法,就要手动的注册函数,比如经典的 HandleFunc(path, func(){}),这样在玩具中,或者接口比较少的项目中可以手动,但如果有几百上千种协议定义呢? 当然可以借用代码生成,比如再生成一个 handle.go ,我想省去这个文件
16#
zerozerone
初学
2024-12-6 13:59:58
参考一下这个 https://github.com/brahma-adshonor/gohook
17#
NessajCN
小成
2024-12-6 14:03:06
@assiadamo 我试着理解你的意图:你是不是想定义一个 func Process() , 这个 Process 的参数可以是 Echo 类型的量,也是跟 Echo 类似的还有几百上千个的其他结构体的变量,你不想为这些结构体里一个一个定义 Process 函数?
18#
povsister
小成
2024-12-6 14:11:48
你既然只关心 Process ,那直接泛型不就完事了。 很常见的设计模式,go 处理 wiredata 简直舒服的不要不要的,泛型前写这种协议代码还脏一点 interface 乱飞。现在直接给你类型检查都安排的明明白白 。 多练,多看。 业务只需实现 ProcessMsg ,然后直接业务代码自己 Register 就行了。 https://i.imgur.com/73wQyh5.png
19#
assiadamo
楼主
小成
2024-12-6 14:12:35
@NessajCN 不是一个 Echo 协议类生成的时候,会伴随着在业务项目中生成一个 ``` func Process 协议名(协议){} ``` 这样其实当协议收取的时候,框架就应该知道对应的处理函数是什么,信息完全是足够的,但需要一个方法让协议内部的 Process 方法和业务对应协议 Prosess 方法联动起来,我想这一步让框架自己处理,而不是手动的去配置联动关系
20#
povsister
小成
2024-12-6 14:17:23
补充楼上,你顺带也可以把 Constraint 扩展一下加个 Name 方法,这样直接 struct 定义业务消息处理和业务消息类型,框架负责序列化反序列化。 更多一点,通过提供不同入参的 register 方法,或者变长参数提供 register option ,还可以实现业务可选定义 encode decode ,或者直接将整个 codec 层可插拔可协商,非常简洁明了。
下一页 »
1
2
3
4
/ 4 页
下一页
浏览过的版块
Android
奇思妙想
纯水
健康
综艺
返回顶部