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

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

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

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

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

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

© 2021 V2EX