1

我需要访问模板中数组中的一些任意元素。

我有一个返回 3 个元素的数组的函数,我只想访问第二个元素。我怎么做?

模板:

test start
{{ service "mongodb" }}
test end

结果是:

test start 
[0xc208062de0 0xc208062d80 0xc208062e40] 
test end
4

1 回答 1

2

我认为预定义的全局函数index可以在这里提供帮助,来自包模板的文档

index   
Returns the result of indexing its first argument by the
following arguments. Thus "index x 1 2 3" is, in Go syntax,     
x[1][2][3]. Each indexed item must be a map, slice, or array.

这是一个例子;

package main

import (
    "log"
    "os"
    "text/template"
)

func returnArray(dummy string) []int {
    return []int{11, 22, 33}
}

func main() {
    funcMap := template.FuncMap{
        "myFunc": returnArray,
    }

    const templateText = `
    Output 0: {{myFunc "abc"}}
    Output 1: {{index (myFunc "abc") 0}}
    Output 2: {{index (myFunc "abc") 1}}
    Output 3: {{index (myFunc "abc") 2}}
    `

    tmpl, err := template.New("myFuncTest").Funcs(funcMap).Parse(templateText)
    if err != nil {
        log.Fatalf("parsing: %s", err)
    }

    err = tmpl.Execute(os.Stdout, "")
    if err != nil {
        log.Fatalf("execution: %s", err)
    }
}

输出

Output 0: [11 22 33]
Output 1: 11
Output 2: 22
Output 3: 33
于 2014-12-29T09:06:56.900 回答