Golang Go语言中 helm 模版或 golang 模版,如何实现 Java 中 stream.map.join 的效果?
我的 values 文件中定义了一些接口,这些接口应当被转发给一个服务
values.yaml:
path:
- /aa
- /bb
- /cc
如何实现最终渲染出这样的效果:
router-swap:
rule: "PathPrefix(/aa
)||PathPrefix(/bb
)||PathPrefix(/cc
)"
service: swap-service
middlewares:
我已经看到了 join 但是我不知道如何使 list 中的每个元素增加 PathPrefix router-swap: rule: {{ join "||" .Values.path }} service: swap-service middlewares:
Golang Go语言中 helm 模版或 golang 模版,如何实现 Java 中 stream.map.join 的效果?
更多关于Golang Go语言中 helm 模版或 golang 模版,如何实现 Java 中 stream.map.join 的效果?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
如果是 java list.stream().map(it->“PathPrefix(it)”).collect(Collectors.join("||"))就能得到效果
但是 go 语言我找了半天好像没有相应的函数
更多关于Golang Go语言中 helm 模版或 golang 模版,如何实现 Java 中 stream.map.join 的效果?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在 Go 模板里比较麻烦一点,我想到两个方式实现你可以参考下:plain<br>// templates/_helpers.tpl<br><br>{{- define "rules.join" -}}<br>{{- $rules := list "" -}}<br>{{- range . -}}<br> {{- $rules = append $rules (printf "PathPrefix(%q)" .) -}}<br>{{- end -}}<br>{{- join "||" (compact $rules) -}}<br>{{- end -}}<br>
plain<br>// templates/deployment.yaml<br><br>apiVersion: apps/v1<br>kind: Deployment<br>metadata:<br> name: {{ include "joinexample.fullname" . }}<br> annotations:<br> oneline: '{{- range (initial .Values.paths) -}} {{- printf "PathPrefix(%q)||" . -}} {{- end -}} {{- printf "PathPrefix(%q)" (last .Values.paths) -}}'<br> byblock: {{ include "rules.join" .Values.paths }}<br>
Thanks ! 我认为第一种更干净一点,我采用第一种了