dongyihang3575 2019-08-20 06:00
浏览 44
已采纳

在Go中通过反射创建结构

I want to define a struct completely dynamically, so that I can get the following struct, but without defining it first?

type Data struct {
   a string
   b int `json:"b"`
}
d := Data{}
  • 写回答

1条回答 默认 最新

  • dqx24298 2019-08-20 12:49
    关注

    An application can create a struct programmatically using reflect.StructOf, but all fields in the struct must be exported.

    The question gets the struct as a value, but it's likely that a pointer to the struct is more useful to the application.

    Given the above, this answer shows how to do the following without defining the type at compile time:

    type Data struct {
       A string `json:"a"`
       B int `json:"b"`
    }
    var d interface{} = &Data{}
    

    The code is:

    t := reflect.StructOf([]reflect.StructField{
        {
            Name: "A",
            Type: reflect.TypeOf(int(0)),
            Tag:  `json:"a"`,
        },
        {
            Name: "B",
            Type: reflect.TypeOf(""),
            Tag:  `json:"B"`,
        },
    })
    d := reflect.New(t).Interface()
    

    Here's a runnable example that sets some fields: https://play.golang.org/p/uik7Ph8_BRH

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测