英文:
Accessing specific array indices using the go template library
问题
假设我有这样的数据结构:
type Foo struct {
Bar []struct {
FooBar string
}
}
我填充它,使得Bar有3个元素。现在,使用template
库,我如何访问该切片中第3个元素的FooBar
?我尝试了以下方法,但都没有成功:
{Foo.Bar[2].FooBar}
{Foo.Bar.2.FooBar}
我知道我可以使用{.repeated section Foo.Bar} {FooBar} {.end}
,但这会给我每个元素的foobar值,而不仅仅是一个特定的元素。我已经在谷歌上搜索和在IRC上询问了,但没有结果...
英文:
Say i have a data structure like this:
type Foo struct {
Bar []struct {
FooBar string
}
}
And i fill it such that Bar has 3 elements. Now, using the template
library, how can i access say the 3rd element's FooBar
in that slice? I have tried the following with no success:
{Foo.Bar[2].FooBar}
{Foo.Bar.2.FooBar}
Now, i know that i can use {.repeated section Foo.Bar} {FooBar} {.end}
, but that gives me the value of foobar for each element, rather than just a specific one. I have googled and asked on irc to no avail...
答案1
得分: 3
使用新的text/template
或html/template
:
package main
import (
"fmt"
"text/template" // 或者 html/template
"os"
)
func main() {
tmpl, err := template.New("name").Parse("{{index . 0}}")
if err != nil {
fmt.Println(err)
return
}
tmpl.Execute(os.Stdout, []string{"是的,那是我", "不是那个!"})
}
英文:
Using the new text/template
or html/template
:
package main
import (
"fmt"
"text/template" // or html/template
"os"
)
func main() {
tmpl, err := template.New("name").Parse("{{index . 0}}")
if err != nil {
fmt.Println(err)
return
}
tmpl.Execute(os.Stdout, []string{"yup, that's me", "not that!"})
}
答案2
得分: 1
我相当确定这是不可能的。也许你可以重新组织你的数据,使其成为具有命名字段的形式。
或者在你的实际应用程序中编写更多的逻辑。我认为数组索引在模板包的范围之外。
英文:
I'm fairly certain this just isn't possible. Perhaps there's a way you could restructure your data so that it's all named fields.
Or just write some more logic in your actual application. Array indexing is somewhat beyond the scope of the template package I would think.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论