Как заполнить структуру, которая имеет много вложенных структур в Go - PullRequest
0 голосов
/ 28 августа 2018

Каков наилучший способ заполнить структуру, в которой много вложенных структур? Я создал структуру для генерации из нее файла схемы 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 голосов
/ 28 августа 2018

Лучший способ сделать это с помощью метода конструктора. Это будет более читабельным и намного быстрее, чем использование тегов плюс отражение. Что-то вроде:

func NewSchema() *Schema {
    return &Schema{
        Schema: "http://json-schema.org/draft-04/schema#",
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...