首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何按父子顺序构造yaml文件?

如何按父子顺序构造yaml文件?
EN

Stack Overflow用户
提问于 2019-05-28 07:49:02
回答 1查看 595关注 0票数 1

我想通过yaml文件使用golang形成一个结构,但我发现很难弄清楚怎么做。

api:
  local:
    host: localhost
    port: 8085
  develop:
    host:
    port:
  production:
    host:
    port:
rest-api:
  local:
    host: localhost
    port: 8085
  develop:
    host:
    port:
  production:
    host:
    port:

这是我的yaml文件中的格式

预期的代码这是我想创建一个动态的api网址在本地,开发和生产格式,如api :本地= host+port,开发和生产相同,以动态配置它很容易和设置

非常感谢您在golang struct中的帮助,也感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-28 09:43:24

这个在线资源会带你走完一半的路:

https://mengzhuo.github.io/yaml-to-go/

粘贴yaml会产生以下结果:

type AutoGenerated struct {
    API struct {
        Local struct {
            Host string `yaml:"host"`
            Port int    `yaml:"port"`
        } `yaml:"local"`
        Develop struct {
            Host interface{} `yaml:"host"`
            Port interface{} `yaml:"port"`
        } `yaml:"develop"`
        Production struct {
            Host interface{} `yaml:"host"`
            Port interface{} `yaml:"port"`
        } `yaml:"production"`
    } `yaml:"api"`
    RestAPI struct {
        Local struct {
            Host string `yaml:"host"`
            Port int    `yaml:"port"`
        } `yaml:"local"`
        Develop struct {
            Host interface{} `yaml:"host"`
            Port interface{} `yaml:"port"`
        } `yaml:"develop"`
        Production struct {
            Host interface{} `yaml:"host"`
            Port interface{} `yaml:"port"`
        } `yaml:"production"`
    } `yaml:"rest-api"`
}

有明显的子类型副本。所以它可以被修剪。

第一遍:

type Address struct {
    Host string `yaml:"host"`
    Port int    `yaml:"port"`
}

type MyConfig struct {
    API struct {
        Local      Address `yaml:"local"`
        Develop    Address `yaml:"develop"`
        Production Address `yaml:"production"`
    } `yaml:"api"`
    RestAPI struct {
        Local      Address `yaml:"local"`
        Develop    Address `yaml:"develop"`
        Production Address `yaml:"production"`
    } `yaml:"rest-api"`
}

第二次(也是最后一次)传递:

type Address struct {
    Host string `yaml:"host"`
    Port int    `yaml:"port"`
}

type Deployment struct {
    Local      Address `yaml:"local"`
    Develop    Address `yaml:"develop"`
    Production Address `yaml:"production"`
}

type MyConfig struct {
    API     Deployment `yaml:"api"`
    RestAPI Deployment `yaml:"rest-api"`
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56333524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档