Как разобрать каждый элемент словаря HCL по golang?

Я попытался разобрать конфигурацию HCL с помощью golang, но это не работает.

type cfg_dict struct {
      name     string       `hcl:",key"`
      type     string       `hcl:"type"`
}

type hcl_config struct {
      config_items    cfg_dict      `hcl:"config"`
}

func main() {
    hcl_example = `config "cfg1" {
           type = "string"
    }`

    hcl_opts := &hcl_config{}

    hcl_tree, err := hcl.Parse(hcl_example)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    if err := hcl.DecodeObject(&hcl_opts, hcl_tree); err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    fmt.Println(hcl_opts)
}

Когда я попытался запустить этот тестовый код после сборки, он показывает пустое значение.

&{[]}

Есть ли проблема, что я должен исправить?

1 ответ

Поля в структуре, которую вы пытаетесь демаршалировать из HCL, необходимо экспортировать. Для экспорта полей сделайте первый символ в имени поля заглавным.

      type cfg_dict struct {
  Name     string       `hcl:",key"`
  Type     string       `hcl:"type"`
}

type hcl_config struct {
  Config_items    cfg_dict      `hcl:"config"`
}
Другие вопросы по тегам