go 中怎么声明动态类型的 slice?

2022-08-24 16:48:04 +08:00
 azev
想要这样做 不知道能不能行?
types := map[string]interface{}{"User": User{}, "Order": Order{}}
var items = ???types["User"]???
db.Find(&items)
782 次点击
所在节点    问与答
6 条回复
Morriaty
2022-08-24 17:07:45 +08:00
gorm 官网文档有个公共属性的例子,就是「裤子」「头盔」都是「商品」
azev
2022-08-24 18:30:54 +08:00
@Morriaty 这会不清楚怎么弄出这个 [商品] 传进去
azev
2022-08-24 22:39:26 +08:00
测试了下
types := map[string]interface{}{"User": User{}, "Order": Order{}}
var items = reflect.SliceOf(reflect.TypeOf(types["User"]))
db.Find(&items)
这样编译和运行都没有报错 但是没有进去数据
azev
2022-08-24 23:25:25 +08:00
改了下
var items = reflect.New(reflect.SliceOf(reflect.TypeOf(dictTypes["User"]))).Interface()
这样就可以写入数据了
新问题是 range items 循环报错
yaott2020
2022-08-25 08:47:18 +08:00
[]interface{} 这样?
qianxiaoxiao
2022-08-25 11:53:28 +08:00
反射吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/875096

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX