没有泛型, 如何解决类型转换问题?

aaaaaaaa1 · · 717 次点击 · 开始浏览    置顶

switch val:= inf.(type){ case A: val.sum = val.x+val.y+val.z case B: val.sum = val.x+val.y+val.z case C: val.sum = val.x+val.y+val.z case D: val.sum = val.x+val.y+val.z case E: val.sum = val.x+val.y+val.z } 我写的是游戏服务器, 模拟物理引擎. 有几十种形状, 形状的属性还有各种差异, 又要把这些形状分组存放到map[][interface]中; 总之十分复杂; a. 使用接口模式: 比如获取形状type, 使用getType()接口, 然后呢? .(type)又没法存储, 如何转换为具体类型? 只能是switch, 就像上面代码那样. b.所有属性获取全部接口化, 这浪费性能, 也无意义; 在没有泛型的情况下, 复杂项目如何解决这interface类型转换问题? 难道只能switch val:= inf.(type), 甚至每个方法都要加上这复杂的代码? // 注: 用switch val:= inf.(type) 比直接使用接口性能更好. 没有泛型真是没法开发, 只能用interface{} + 重复代码, 或 switch val:= inf.(type) 浪费性能曲线解决问题; 所以, 是不是要换语言, 直接上C++ / RUST? 用C++代码演示我想要的功能: ![捕获.PNG](https://static.studygolang.com/210204/4bcc54bfb7eaa51672a5ead2eed007c0.PNG)![捕获.PNG]

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

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

717 次点击  
加入收藏 微博
27 回复  |  直到 2021-02-07 13:33:12
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传