String 问:go jira:slice不是在模板中切片字符串

String 问:go jira:slice不是在模板中切片字符串,string,go,templates,jira,slice,String,Go,Templates,Jira,Slice,我尝试使用以下模板行从“2020-03-09T08:09:40.000+0000”获取日期(2020-03-09): 。。。[票证:{-.key-}:{{.fields.resolution.name}]开始{{slice.fields.created 0 10}}并结束{{slice.fields.resolutiondate 0 10}… -->无效用法:模板:gojira:7:62:在以下位置执行“gojira”:调用切片时出错:列表的类型应为切片或数组,而不是字符串 文件说: 切片 sl

我尝试使用以下模板行从“2020-03-09T08:09:40.000+0000”获取日期(2020-03-09):

。。。[票证:{-.key-}:{{.fields.resolution.name}]开始{{slice.fields.created 0 10}}并结束{{slice.fields.resolutiondate 0 10}…

-->无效用法:模板:gojira:7:62:在以下位置执行“gojira”:调用切片时出错:列表的类型应为切片或数组,而不是字符串

文件说:

切片
slice返回将其第一个参数按 剩下的论点。因此,“slice x1 2”在Go语法中是x[1:2], “slice x”是x[:],“slice x1”是x[1:],而“slice x1 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

我认为您不希望在.fields.created周围加引号,因为您将以该字符串结束,而不是您想要的日期,因此需要修复,但不应导致此错误

此完整模板(有一些小改动)至少适用于最新的go:

我假设文本/模板,您使用哪个库输出此模板

slice函数的引入相对较新,但它并没有给出那个错误。您确定没有在func映射中重新定义切片吗?这似乎是最有可能的解释,因为slice函数在任何情况下都不会给出您引用的错误


你能用一个单独的字符串,比如上面的play.golang.org链接,但用你的模板,对切片函数进行一个简单的测试吗?

我认为你不想在.fields.created上加引号,因为你最终会得到这个字符串,而不是你想要的日期,所以这需要修复,但不应该导致这个错误

此完整模板(有一些小改动)至少适用于最新的go:

我假设文本/模板,您使用哪个库输出此模板

slice函数的引入相对较新,但它并没有给出那个错误。您确定没有在func映射中重新定义切片吗?这似乎是最有可能的解释,因为slice函数在任何情况下都不会给出您引用的错误


您可以单独使用字符串(如上面的play.golang.org链接)对该slice函数进行简单测试,但使用您的模板吗?

添加了
slice
函数,因此,如果您使用的是您在注释中指出的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)
}
哪些输出(在上尝试):


添加了
slice
函数,因此,如果您使用的是注释中指出的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 jira 1.0.23>go版本>go版本go1.10.4 linux/amd64>lsb_发行版-a>没有可用的lsb模块。>发行商ID:Ubuntu>Description:Ubuntu 18.04.5 LTS>Release:18.04>Codename:bionic>wsl 1(Windows for Linux)版本10.0.17134.885您使用的是什么版本的go?切片字符串工作正常:>go jira 1.0.23>go版本>go版本go1.10.4 linux/amd64>lsb_发行版-a>没有可用的lsb模块。>发行商ID:Ubuntu>Description:Ubuntu 18.04.5 LTS>Release:18.04>Codename:bionic>wsl 1(Windows for Linux)版本10.0.17134.885Hi,ja quoutes是一个尝试,看看它是否有效。。。是的,我(实际上是go-jira)使用文本/模板。不幸的是,go-jira似乎不支持自定义模板功能…您的示例是我期望它如何工作。。。我不太熟悉去看看切片是否被覆盖了。。。至少在代码中没有列出!?嗨,是的,考特斯是一个尝试,看看它是否有效。。。是的,我(实际上是go-jira)使用文本/模板。不幸的是,go-jira似乎不支持自定义模板功能…您的示例是我期望它如何工作。。。我不太熟悉去看看切片是否被覆盖了。。。至少在代码中没有列出!?哦知道了。。。是的,我明白了,如果你在WSL和Ubuntu18.04中安装go,你只能得到go 1.10。。。所以我会升级。。。非常感谢…>sudo apt安装golang>阅读软件包列表。。。完成>构建依赖关系树>读取状态信息。。。完成>将安装以下附加软件包:>golang-1.10 golang-1.10-doc golang-doc>将安装以下新软件包:>golang-1.10 golang-1.10-doc golang-doc>0升级,4新安装,0删除,1未升级。哦。。。知道了。。。是的,我明白了,如果你在WSL和Ubuntu18.04中安装go,你只能得到go 1.10。。。所以我会升级。。。非常感谢…>sudo apt安装golang>阅读软件包列表。。。完成>构建依赖关系树>读取状态信息。。。完成>将安装以下附加软件包:>golang-1.10 golang-1.10-doc golang-doc>将安装以下新软件包:>golang-1.10 golang-1.10-doc golang-doc>升级0,新安装4,删除0,未升级1。
12