28 条回复  ·  3138 次点击
assiadamo 楼主 小成 2025-8-26 16:17:42
@sunny352787 为什么不用 var _ IFIrst = (*Entity)(nil) var _ ISecond = (*Entity)(nil)
sunny352787 小成 2025-8-26 16:41:24
@assiadamo #10 你要是这个理解能力,那我很难跟你解释啊...
spritecn 初学 2025-8-26 16:50:19
我是从 java 过来的,写了几天我发现这么搞太麻烦了,简单方法需要多个实现的场景,都是直接 type xxxxer func(),like: ----- type Pusher func(track Track) error func PushToLog(track Track) error { slog.Infof("track: %+v", track) return nil } func NewMqttPusherAdapter(mqttPusher *MqttPusher) Pusher { return mqttPusher.Push }
assiadamo 楼主 小成 2025-8-26 16:51:34
@sunny352787 你们 gopher 的批判方式真是不知所云,虽然好歹 show 了 code ,提了下为什么要在运行时用断言检测接口是否实现而不是编译时,这么回我,给我整这死出,都在装高手不解决实际问题吗
sunny352787 小成 2025-8-26 16:55:27
@assiadamo #13 我说了,你这个理解能力我解决不了,我能力有限你找别人吧
mightybruce 小成 2025-8-26 16:57:55
多用 struct 嵌套,少用 interface, 另外 go 不是面向对象的语言,其接口实现都是鸭子类型。
mightybruce 小成 2025-8-26 16:58:56
其他用法套用函数式编程,强调 go 不是面向对象的语言。
assiadamo 楼主 小成 2025-8-26 17:01:32
@spritecn 你用的注入的方式吗,把具体逻辑写在每个 Pusher 函数里,但这样在基类自带基础实现时怎么用呢 if pusher != nil { pusher(track) } else { //基础实现 } 这样吗
mightybruce 小成 2025-8-26 17:02:41
那个老兄的代码 Entity 已经实现了 IFIrst 和 ISecond 的接口
darksword21 小成 2025-8-26 17:08:17
看着头疼,无法批判
返回顶部