使用go模板创建yaml列表

drnojrws  于 2023-02-10  发布在  Go
关注(0)|答案(1)|浏览(277)

我正在寻找创建一个yaml文件在以下格式。使用Go template

Custom_listeners:
    Config1 : config_value
    Config2 : config_value    

    copy_files:
      - source_path: /path/to/file.txt
        destination_path: /tmp/file.txt

我使用下面的模板代码来获取值
x一个一个一个一个x一个一个二个x
我可以对上面的模板做什么修改来创建以下格式的yaml. with - on the source_path:

Custom_listeners: 
   copy_files:
     - source_path1: /path/to/file.txt
       destination_path: /tmp/file.txt

     - source_path2: /path/to/file.txt
       destination_path: /tmp/file.txt
w8f9ii69

w8f9ii691#

这是你想要的吗?

tmpStr := `Custom_listeners:
    {{ range $Custom_listener:=$.Custom_listeners }}{{ range $k,$v:=$Custom_listener }}{{ $k }}: {{ $v }}
    {{ end }}{{ end }}
copy_files:
  - source_path: {{ $.source_path }}
  destination_path: {{ $.destination_path }}
`
    data := map[string]any{
        "Custom_listeners": []map[string]string{
            {"Config1": "config_value"},
            {"Config2": "config_value"},
        },
        "source_path":      "/path/to/file.txt",
        "destination_path": "/tmp/file.txt",
    }

    tmp := template.New("yaml template")
    tmp, _ = tmp.Parse(tmpStr)
    tmp.Execute(os.Stdout, data)

但是为什么不使用yaml包呢?比如...“gopkg.in/yaml.v2“?

相关问题