WHERE
1=1
{{- if .Params.FromDate }}
AND datestr >= '{{ ConvertDate .Params.FromDate }}'
{{- else }}
AND datestr >= '{{.CurrentDate }}'
{{- end }}
所以这是我的查询模板的片段,
const template = '...'
。
我正在将变量从单独的 go 文件插入到 .Params.FromDate 和 .CurrentDate 中。
但是,当我执行应该打印此模板并插入这些数据的函数时,当我不包含 .Params.FromDate 变量时,它只会显示为 else 语句的空字符串
''
,并且我不知道为什么。
当语句为真并且提供了 .Params.FromDate 时,数据将被正确打印。当我将 .CurrentDate 放入真实逻辑中时,它会很好地打印出来,但是当逻辑为 false 时,会提供一个空字符串,而不是我传入的 .CurrentDate 。
我检查了一下,.CurrentDate 已初始化并传入,但它只是不打印,我不明白为什么。
templateData := map[string]interface{}{
"Params": params,
"CurrentDate": currentDate,
}
err = tmpl.Execute(&queryBuilder, templateData)
fmt.Println(queryBuilder.String())
上面是我在另一个 go 文件中调用它的方式。 tmpl 是第一个代码块中的字符串模板。
我认为它与this
有关已知选项:
missingkey:如果映射使用映射中不存在的键进行索引,则控制执行期间的行为。
“missingkey=默认”或“missingkey=无效” 默认行为:不执行任何操作并继续执行。 如果打印的话,索引操作的结果就是字符串 “”。
“缺失密钥=零” 该操作返回地图类型元素的零值。
“缺少密钥=错误” 执行立即停止并出现错误。
听起来您想使用该选项
"missingkey=zero"
:
tmpl.Option("missingkey=zero").Execute(&queryBuilder, templateData)
或者,你也可以这样做
{{- 如果索引 .Params "FromDate" }}
默认情况下应该使用“缺失的键为零值”