V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ql562482472
V2EX  ›  Go 编程语言

helm 模版或 golang 模版,如何实现 Java 中 stream.map.join 的效果?

  •  
  •   ql562482472 · 170 天前 · 653 次点击
    这是一个创建于 170 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的 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:

    3 条回复    2022-08-19 16:08:47 +08:00
    ql562482472
        1
    ql562482472  
    OP
       170 天前
    如果是 java list.stream().map(it->"PathPrefix(it)").collect(Collectors.join("||"))就能得到效果
    但是 go 语言我找了半天好像没有相应的函数
    jaynos
        2
    jaynos  
       170 天前   ❤️ 1
    在 Go 模板里比较麻烦一点,我想到两个方式实现你可以参考下:
    ```plain
    // templates/_helpers.tpl

    {{- define "rules.join" -}}
    {{- $rules := list "" -}}
    {{- range . -}}
    {{- $rules = append $rules (printf "PathPrefix(%q)" .) -}}
    {{- end -}}
    {{- join "||" (compact $rules) -}}
    {{- end -}}
    ```

    ```plain
    // templates/deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: {{ include "joinexample.fullname" . }}
    annotations:
    oneline: '{{- range (initial .Values.paths) -}} {{- printf "PathPrefix(%q)||" . -}} {{- end -}} {{- printf "PathPrefix(%q)" (last .Values.paths) -}}'
    byblock: {{ include "rules.join" .Values.paths }}
    ```
    ql562482472
        3
    ql562482472  
    OP
       170 天前
    @jaynos Thanks ! 我认为第一种更干净一点,我采用第一种了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1308 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 10:37 · PVG 18:37 · LAX 02:37 · JFK 05:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.