首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解组戈朗的数组字段

无法解组戈朗的数组字段
EN

Stack Overflow用户
提问于 2020-08-22 21:22:24
回答 1查看 226关注 0票数 0

我正在尝试解压缩下面的flux HelmRelease文件。

代码语言:javascript
复制
apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  annotations:
    fluxcd.io/automated: 'false'
    fluxcd.io/tag.ats: glob:*
  name: ats
  namespace: myns
spec:
  chart:
    git: git@github.com:reponame/project.git
    path: charts/path1/path1/myapp
    ref: master
  releaseName: foobar
  values:
    allowAllEgress: true
    recycleApp: true
    hooks:
      slackChannel: https://hooks.slack.com/services/something/somethingelse/

这是我的模特

代码语言:javascript
复制
type HelmReleaseValues struct {
    AllowAllEgress bool `yaml:"allowAllEgress"`
    RecycleApp     bool `yaml:"recycleApp"`
    Hooks          `yaml:"hooks"`
}

type Hooks struct {
    SlackChannel string `yaml:"slackChannel"`
}

type Values struct {
    HelmReleaseValues `yaml:"values"`
    ReleaseName       string `yaml:"releaseName"`
    Chart             `yaml:"chart"`
}

type Spec struct {
    Values `yaml:"spec"`
}

问题是,字段allowAllEgressrecycleApp正在解组。

但是,我的struct中的Hooks字段最终是空的。

我在结构建模/标记方面做错了什么?

编辑:这是我的代码

代码语言:javascript
复制
package main

import (
    "fmt"
    "io/ioutil"
    "os"

    "github.com/davecgh/go-spew/spew"
    "gopkg.in/yaml.v3"
)

const ExitCodeCmdErr = 1

func main() {
    rawYaml := parseHelmReleaseFile("myfile.yaml")
    spew.Dump(rawYaml)
}

func parseHelmReleaseFile(fileName string) Spec {

    var v Spec

    yamlFile, err := ioutil.ReadFile(fileName)
    if err != nil {
        fmt.Printf("yaml file err   #%v ", err)
        os.Exit(ExitCodeCmdErr)
    }

    err = yaml.Unmarshal(yamlFile, &v)
    if err != nil {
        fmt.Printf("Unmarshal: %v", err)
        os.Exit(ExitCodeCmdErr)
    }

    return v
}

我正在运行这个程序,并为输出(实际的helm发行文件是巨大的)而欢呼。

代码语言:javascript
复制
▶ go clean && gb .             
~/Desktop/yamltutorial
./foobar | grep -i hooks -A 3
--
   Hooks: (main.Hooks) {
    SlackChannel: (string) ""
   }
  },
EN

回答 1

Stack Overflow用户

发布于 2020-08-22 21:40:03

您没有图表结构

代码语言:javascript
复制
type Chart struct {
    Git  string `yaml:"git"`
    Path string `yaml:"path"`
    Ref  string `yaml:"ref"`
}

添加,并得到以下输出

代码语言:javascript
复制
{Values:{HelmReleaseValues:{AllowAllEgress:true RecycleApp:true Hooks:{SlackChannel:https://hooks.slack.com/services/something/somethingelse/}} ReleaseName:foobar Chart:{Git:git@github.com:reponame/project.git Path:charts/path1/path1/myapp Ref:master}}}

操场文件与完整的代码。

https://play.golang.org/p/vCnjApr6gI9

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63541227

复制
相关文章

相似问题

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