1 回答
TA贡献1807条经验 获得超9个赞
正如您所经历的那样,您不能跨越结构的字段。您只能对切片、数组、映射和通道进行范围。
使用地图
最简单的方法就是传递它:一张地图。您可以直接将 YAML 解组为映射或空接口:
func parseValues() interface{} {
var values interface{}
// ...rest is unchanged
}
func insertValues(class interface{}) {
// ...unchanged
}
稍微更改模板的格式(注意.services):
{{- range $key, $value := .services}}
{{$key}} {{$value}}
{{- end}}
有了这些,它就可以工作并且输出是:
app map[replicaCount:1 image:matryoshka/app]
cron map[image:matryoshka/cron replicaCount:1]
使用切片
如果您想继续使用您的Services模型,另一种选择是手动准备和传递一部分字段:
insertValues([]interface{}{values.Services.App, values.Services.Cron})
然后是模板:
{{- range $key, $value := .}}
{{$key}} {{$value}}
{{- end}}
然后是输出:
0 {matryoshka/app 1}
1 {matryoshka/cron 1}
使用切片和反射
如果您希望它保持“动态”(意味着您不必手动枚举字段),您可以创建一个辅助函数,它使用反射来实现。
- 1 回答
- 0 关注
- 138 浏览
添加回答
举报