string - 问:go-jira:slice 没有对模板中的字符串进行切片
问题描述
我尝试使用此模板行从“2020-03-09T08:09:40.000+0000”获取日期(2020-03-09):
... [Ticket:{{- .key -}}:{{ .fields.resolution.name }}] starts {{ slice .fields.created 0 10 }} and ends {{ slice .fields.resolutiondate 0 10 }} ...
--> 无效用法:模板:gojira:7:62:在 <slice .fields.created 0 10> 处执行“gojira”:调用切片时出错:列表应该是切片或数组的类型,但应该是字符串
文档说:
slice
slice 返回将其第一个参数分割为剩余参数的结果。因此,“slice x 1 2”在 Go 语法中是 x[1:2],而“slice x”是 x[:],“slice x 1”是 x[1:],“slice x 1 2 3” " 是 x[1:2:3]。第一个参数必须是字符串、切片或数组。
这是我与 go-jira 一起使用的完整模板:
@startgantt
{{ range .issues -}}
[Ticket:{{- .key -}}:{{ .fields.resolution.name }}] starts {{ slice .fields.created 0 10 }} and ends {{ slice .fields.resolutiondate 0 10 }}
[Ticket:{{- .key -}}:{{ .fields.resolution.name }}] is colored Yellow
{{ if (and .fields.customfield_11202 .fields.customfield_11203) -}}
[Planned:{{- .key -}}:{{ .fields.resolution.name }}] starts {{ .fields.customfield_11202 }} and ends {{ .fields.customfield_11203 }}
[Planned:{{- .key -}}:{{ .fields.resolution.name }}] is colored LightBlue
{{ end -}}
{{ end -}}
@endgantt
解决方案
该slice
函数是在Go 1.13中添加的,因此如果您使用的是 Go 1.10.4,正如您在评论中指出的那样,解析引擎不知道该函数。Go-jira 可能会添加一个具有此名称的函数,但这可能不支持对字符串进行切片。
最好是升级到 Go 1.13 或更高版本,并且此slice
函数将准备好对字符串进行切片,如本例所示:
t := template.Must(template.New("").Parse(`{{slice . 1 3}}`))
if err := t.Execute(os.Stdout, "012345"); err != nil {
panic(err)
}
哪些输出(在Go Playground上尝试):
12
推荐阅读
- django - django模板添加两个变量
- sql - 为什么 postgres 选择 WHERE IN(..) 的低效解析?
- gitlab-ci - 有没有办法从 gitlab AutoDevOps 中排除特定分支?
- android - 空对象引用上的 PhoneAuthProvider.getInstance().verifyPhoneNumber
- vba - 有一个表单会根据按下的按钮而改变,但我需要向它添加一个添加/编辑按钮
- javascript - 切换兄弟段落
- c# - EF Core 代码首先自行创建附加属性
- javascript - 需要使用 Reactjs 实现 endDate 不能超过 startDate 一年
- jquery - Customize UL LI
- c - 如何指定 XLL 函数应该溢出?