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 關注
- 175 瀏覽
添加回答
舉報