V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
azev
V2EX  ›  问与答

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

  •  
  •   azev · 101 天前 · 481 次点击
    这是一个创建于 101 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想要这样做 不知道能不能行?
    types := map[string]interface{}{"User": User{}, "Order": Order{}}
    var items = ???types["User"]???
    db.Find(&items)
    6 条回复    2022-08-25 11:53:28 +08:00
    Morriaty
        1
    Morriaty  
       101 天前
    gorm 官网文档有个公共属性的例子,就是「裤子」「头盔」都是「商品」
    azev
        2
    azev  
    OP
       101 天前
    @Morriaty 这会不清楚怎么弄出这个 [商品] 传进去
    azev
        3
    azev  
    OP
       101 天前
    测试了下
    types := map[string]interface{}{"User": User{}, "Order": Order{}}
    var items = reflect.SliceOf(reflect.TypeOf(types["User"]))
    db.Find(&items)
    这样编译和运行都没有报错 但是没有进去数据
    azev
        4
    azev  
    OP
       101 天前
    改了下
    var items = reflect.New(reflect.SliceOf(reflect.TypeOf(dictTypes["User"]))).Interface()
    这样就可以写入数据了
    新问题是 range items 循环报错
    yaott2020
        5
    yaott2020  
       101 天前 via Android
    []interface{} 这样?
    qianxiaoxiao
        6
    qianxiaoxiao  
       101 天前
    反射吧
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2838 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 07:38 · PVG 15:38 · LAX 23:38 · JFK 02:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.