首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bool返回%!S(Bool=True)代替字符串的Helm _helpers.yaml模板

使用bool返回%!S(Bool=True)代替字符串的Helm _helpers.yaml模板
EN

Stack Overflow用户
提问于 2021-10-04 18:12:50
回答 1查看 1.3K关注 0票数 1

我有以下Helm模板定义:

代码语言:javascript
复制
{{- define "api.test-drive" -}}
{{- if not .Values.global.testDrive }}
{{- printf "%s" .Values.default.TEST_DRIVE | quote -}}
{{- else -}}
{{- printf "%s" .Values.global.testDrive | title | quote -}}
{{- end -}}
{{- end -}}

在configmap模板中使用以下内容:

代码语言:javascript
复制
TEST_DRIVE: {{ include "api.test-drive" . }}

以及global.testDrive: true的全局值。但是,当Helm执行此插入到configmap时,它将其存储为:

代码语言:javascript
复制
TEST_DRIVE:
----
%!S(Bool=True)

不应该将global.testDrive从bool true转换为string,然后应用titlequote函数吗?目前还不清楚这里发生了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-04 21:38:14

Go text/template printf模板函数直接传递给fmt.Printf(),但是fmt包定义的格式字符串与C的printf(3)函数略有不同。特别是,%s格式修饰符只为字符串类型的参数定义,并且您已经传递给它一个bool类型的参数;%!s(...)输出意味着处理%s参数时出错(参见格式错误)。

如果您想在这里使用printf%v将将任意值转换为具有默认语法的字符串。

代码语言:javascript
复制
{{- printf "%v" .Values.global.testDrive | title | quote -}}
{{/*        ^^                                          */}}

Helm包括辅助对象,在这里可能更方便。

代码语言:javascript
复制
{{- .Values.global.testDrive | toString | title | quote -}}

(在大多数情况下,...but 在引擎盖下面做的都是printf "%v"。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69440600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档