为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕斯709654 2023-06-19 17:08:51
我想通过 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 方面的帮助,也感谢您的帮助。
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

粘贴您的 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"`

}


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信