V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  badbye  ›  全部回复第 11 页 / 共 35 页
回复总数  696
1 ... 7  8  9  10  11  12  13  14  15  16 ... 35  
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@NessajCN 兜兜转转还是用了上面说的生成个 handles.go 的方法,目前能跑通
```
package proto
type Echo struct {
BaseMsg
Msg string
}
func (msg *Echo) Decode(src *bytes.Buffer) error {}
func (msg *Echo) Encode(dst *bytes.Buffer) error {}
func (echo *Echo) Process() error {
return MsgProcessor[echo.GetHeader().TypeId](echo)
}
```
外部代码生成个放所有业务逻辑入口的 map
```
type MsgProcessorFunc[T Msg] func(msg T) error

var MsgProcessor = map[int32]MsgProcessorFunc[Msg]{}
MsgProcessor[1] = func(msg io.Msg) error { return echo.ProcessEcho(msg.(*proto.Echo)) }
```
在 echo.ProcessEcho 中写实际业务,协议和业务分开
痛苦
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@NessajCN 这样和我的需求反过来了...变成了协议的 package 里写业务逻辑,业务的 package 生成后不动了....
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@povsister 因为以前用过这样的框架,觉得用起来非常爽,现在也算是体验到了框架开发者的心情
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@NessajCN 我理解一下,如果有代码例子就更好了
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@povsister 我预想的使用方式是开发者定义好协议,这个协议可能带 package 信息,然后 go generate ,所有的模板都生成好了,开发者只需要打开一个生成的 go 文件写业务代码就行
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@povsister 我理解 register 需要开发者自己做,就兴趣缺缺
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@NessajCN 不是一个
Echo 协议类生成的时候,会伴随着在业务项目中生成一个
```
func Process 协议名(协议){}
```
这样其实当协议收取的时候,框架就应该知道对应的处理函数是什么,信息完全是足够的,但需要一个方法让协议内部的 Process 方法和业务对应协议 Prosess 方法联动起来,我想这一步让框架自己处理,而不是手动的去配置联动关系
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@NessajCN Java 有注解和字节码替换,可以批量的处理一系列相同定义的东西,但 Go 如果没有相关的魔法,就要手动的注册函数,比如经典的 HandleFunc(path, func(){}),这样在玩具中,或者接口比较少的项目中可以手动,但如果有几百上千种协议定义呢?
当然可以借用代码生成,比如再生成一个 handle.go ,我想省去这个文件
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@to2false Go 的 interface 不能放成员变量就很可惜,比如协议内数据定义,Decode/Encode 相关的代码都不想出现在业务层,要想用 interface 就要再搞个 BaseEcho 之类的组合,还是觉得有点丑
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@NessajCN 这就是想要做到的魔法
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@NessajCN 框架想做到不接触业务层,直接调用协议的`msg.Process()`就能执行业务逻辑,否则还要手动将业务层的各种协议处理函数注册一下
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@zjsxwc 有点天才,可以一试
2024 年 12 月 6 日
回复了 badbye 创建的主题 Go 编程语言 被 Java 毒害的脑子想在 Go 中实现一个操作,望打醒
@NessajCN 因为不要去 proto 包下生成的协议类中写业务逻辑,想把两边的编码隔离开
一张表存无压力,过几年再看
自己的小东西,服务器配置又小,可以试试 go ,相同的业务可以省很多内存
2024 年 11 月 26 日
回复了 badbye 创建的主题 生活 潮男们推荐点衣服?
@oppoic 有点猛男
2024 年 11 月 26 日
回复了 badbye 创建的主题 生活 潮男们推荐点衣服?
@zjsxwc 看成了骑手套装,这么一想小蓝衣小黄衣还挺耐看的
2024 年 11 月 26 日
回复了 badbye 创建的主题 生活 潮男们推荐点衣服?
@wweerrgtc 羽绒服就是这样的
2024 年 11 月 26 日
回复了 badbye 创建的主题 生活 潮男们推荐点衣服?
@hkiJava 始祖鸟和圣上撞了,害怕
1 ... 7  8  9  10  11  12  13  14  15  16 ... 35  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1390 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 16ms · UTC 16:45 · PVG 00:45 · LAX 09:45 · JFK 12:45
♥ Do have faith in what you're doing.