V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
azev
V2EX  ›  问与答

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

  •  
  •   azev · Aug 24, 2022 · 1127 views
    This topic created in 1342 days ago, the information mentioned may be changed or developed.
    想要这样做 不知道能不能行?
    types := map[string]interface{}{"User": User{}, "Order": Order{}}
    var items = ???types["User"]???
    db.Find(&items)
    6 replies    2022-08-25 11:53:28 +08:00
    Morriaty
        1
    Morriaty  
       Aug 24, 2022
    gorm 官网文档有个公共属性的例子,就是「裤子」「头盔」都是「商品」
    azev
        2
    azev  
    OP
       Aug 24, 2022
    @Morriaty 这会不清楚怎么弄出这个 [商品] 传进去
    azev
        3
    azev  
    OP
       Aug 24, 2022
    测试了下
    types := map[string]interface{}{"User": User{}, "Order": Order{}}
    var items = reflect.SliceOf(reflect.TypeOf(types["User"]))
    db.Find(&items)
    这样编译和运行都没有报错 但是没有进去数据
    azev
        4
    azev  
    OP
       Aug 24, 2022
    改了下
    var items = reflect.New(reflect.SliceOf(reflect.TypeOf(dictTypes["User"]))).Interface()
    这样就可以写入数据了
    新问题是 range items 循环报错
    yaott2020
        5
    yaott2020  
       Aug 25, 2022 via Android
    []interface{} 这样?
    qianxiaoxiao
        6
    qianxiaoxiao  
       Aug 25, 2022
    反射吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1417 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 23:54 · PVG 07:54 · LAX 16:54 · JFK 19:54
    ♥ Do have faith in what you're doing.