如何在父子顺序中构造yaml文件?

我想通过 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 url,如 api:local = host+port,与开发和生产相同,以便轻松地动态配置和设置


感谢您在 golang struct 方面的帮助,也感谢您的帮助。


慕斯709654
浏览 111回答 1
1回答

拉莫斯之舞

粘贴您的 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"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go