设为首页
收藏本站
开启辅助访问
全部
问与答
创意
技术
酷工作
生活
交易
资源
节点
飞墙
Follow
明白贴
报酬
登录
注册
飞社-令人惊奇的创意工作者社区-
›
首页
›
Go 编程语言
›
被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒 ...
FSHEX=FIND+SHARE+EXPRESS
飞社-令人惊奇的创意工作者社区- 是一个关于发现分享表达的地方
现在登录
没有账号?
立即注册
推荐主题
›
证券低佣开户万 0.854 免 5, 评论抽奖送五
›
作为中国公民,为币圈交易所工作,领取报酬
›
各位大佬,建议今年买房么
›
我们的服务宗旨是不退钱! RackNerd VPS 大
›
因为一张声卡,我无意体验到 thinkpad+arch
今日热议主题
预出 Mac mini M4 16 256
买新换旧,出 a7r3a 机身,国行有电子票
出京东家政(北京), 30r
程序员 35 岁被优化真的天经地义
不得不感慨,现在做数据分析真不能光靠人肉
黑客是如何找到带有漏洞的服务器?
大伙都用的是什么键盘?什么价格,手感如何
Vibe coding 130 万行代码后,我想给每天陪
难道没人觉得 cloudflare 改版后,很难用吗
证券低佣开户万 0.854 免 5, 评论抽奖送五
显示全部
|
最新评论
31 条回复
·
3772 次点击
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 页
下一页
浏览过的版块
求职
返回顶部