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

无法解组 YAML 结构

无法解组 YAML 结构

Go
阿波罗的战车 2023-05-15 09:48:53
我有一个我认为非常简单的 YAML 结构,我正在尝试写入和读取文件。appName:   version: 1.2.3.4   md5_checksum: 987654321而且我真的很难理解嵌套结构以及它们与 yaml 封送处理的关系。此时我有以下内容:type Application struct {    Name     string `yaml:"application"`    Version  string `yaml:"version"`    Checksum int    `yaml:"md5_checksum"`}yamlData := Application{"MyProgram", "1.2.3.4", 34235234123}y, err := yaml.Marshal(yamlData)if err != nil {    log.Fatal("Yaml marshal failed")}err = ioutil.WriteFile("applications.yaml", y, 0644)if err != nil {    log.Fatal("File write failed")}这让我很接近,但文件内容如下:application: MyProgramversion: 1.2.3.4md5_checksum: 34235234123看起来不错,但是这个文件将被许多应用程序填充。我已经尝试了几种类型的嵌套结构,但在最终构建它们时,我对如何为它们提供值感到困惑。
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

您可以将应用程序结构定义为


type AppVersion struct {

    Version  string `yaml:"version"`

    Checksum int    `yaml:"md5_checksum"`

}


type Application struct {

    Name AppVersion `yaml:"appName"`

}

然后调用AppVersion为


yamlData := Application{Name: AppVersion{Version: "1.2.3.4", Checksum: 34235234123}}



查看完整回答
反对 回复 2023-05-15
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

我在 KibGzr 的帮助下解决了我自己的问题。


不需要仅用于编组步骤的结构。


yamlData := map[string]map[string]string{

    appName: map[string]string{"version": appVersion, "md5_checksum": checksumString},

}

我创建了一个嵌套映射而不是一个结构。这允许我在收集完所有值后只初始化映射,而不是尝试解决结构字段名称。我的输出现在是:


appName:

  md5_checksum: checksumString

  version: appVersion

感谢您的帮助!


查看完整回答
反对 回复 2023-05-15
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

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