接口直接转换是否不好?

aaaaaaaa1 · 2021-02-01 11:50:47 · 1125 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2021-02-01 11:50:47 的主题,其中的信息可能已经有所发展或是发生改变。

接口只支持方法, 实际使用场景有限, 在涉及属性计算时, 往往需要直接调用:

switch val:= inf.(type){

case A: fallthrough 

case B: fallthrough 

case C: fallthrough 

case D: fallthrough 

case E: val.sum = val.x+val.y+val.z

} 像这样直接转换类型, 我测试下性能有差.
有没有更好的方案? 若这般, 每个函数都用调用这无意义的switch, 只是为了转换类型.

类型还不能连写, case A,B,C这样会报错, 不明原因; A-D全部是fallthrough;


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1125 次点击  
加入收藏 微博
4 回复  |  直到 2021-02-04 11:50:49
jiuker
jiuker · #1 · 4年之前

定义一个外部变量暂存你说的那些值

jarlyyn
jarlyyn · #2 · 4年之前

大概率这是你设计思路的问题。

既然是接口,那当然应该是调用接口里定义的方法,而不该直接把接口转换回具体的类型。

aaaaaaaa1
aaaaaaaa1 · #3 · 4年之前
jarlyynjarlyyn #2 回复

大概率这是你设计思路的问题。 既然是接口,那当然应该是调用接口里定义的方法,而不该直接把接口转换回具体的类型。

本质问题就是: 没有泛型, 写接口有什么用? 每个地方都调用函数? 属性全部写get?

jarlyyn
jarlyyn · #4 · 4年之前
aaaaaaaa1aaaaaaaa1 #3 回复

#2楼 @jarlyyn 本质问题就是: 没有泛型, 写接口有什么用? 每个地方都调用函数? 属性全部写get?

接口和泛型有什么直接关系吗……

正常使用接口,不是就是明确我需要或者可能需要的方法有几个吗……

正常使用接口,本身就不该触及属性啊。

典型的用途,你可以看看最新1.16里的 fs.FS

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传