如何在Go中填充具有大量嵌套结构的结构

时间:2018-08-28 13:53:28

标签: go struct

填充其中具有许多嵌套结构的结构的最佳方法是什么? 我制作了一个结构,从中生成一个JSON模式文件,如下所示:

type Schema struct {
  Schema               string `default:"http://json-schema.org/draft-04/schema#"`
  Title                string `default:"Test Schema"`
  Type                 string `default:"object"`
  AdditionalProperties bool   `default:false`
  Properties           struct {
    Core struct {
      Type                 string
      AdditionalProperties bool
      Properties           struct{}
    }
    Work struct {
      Type                 string
      AdditionalProperties bool
      Properties           struct{}
    }
  }
}

起初,我想将默认数据放入标记中并从中填充结构,但是reflect包在嵌套结构中不可见。

这是我使用reflect所做的事情:

t := reflect.TypeOf(Schema{})
for i := 0; i < t.NumField(); i++ {
    field := t.Field(i)
    tag := field.Tag.Get("default")
}

1 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是使用构造函数方法。与使用标签加反射相比,这将更具可读性,并且速度更快。像这样:

func NewSchema() *Schema {
    return &Schema{
        Schema: "http://json-schema.org/draft-04/schema#",
        ...
    }
}