Golang文本/模板序列范围

vjhs03f7  于 11个月前  发布在  Go
关注(0)|答案(1)|浏览(80)

我是Golang的新手。当我想使用“text/template”制作一个HTML表格时,我遇到了一个问题。我没有得到任何关于如何制作序列号的参考。到目前为止我所做的:

<table>
    <thead>
        <tr>
            <td>#</td>
            <td>Name</td>
        </tr>
    </thead>
    <tbody>
        {{ range $index, $val := .MyList }}
        <tr>
            <td>{{ ??? }}</td>
            <td>{{ $val.Name }}</td>
        </tr>
        {{ end }}
    </tbody>
</table>

字符串
我怎么才能得到从1开始的数字?我已经尝试{{ $index + 1 }},但得到错误。请任何人都可以帮助我吗?

tf7tbtn2

tf7tbtn21#

使用自定义函数:

package main

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

const tplDef = `
        {{ range $index, $val := .MyList }}
        <tr>
            <td>{{ $index | incr }}</td>
            <td>{{ $val.Name }}</td>
        </tr>
        {{ end }}
`

func main() {
    tpl := template.New("index")
    tpl.Funcs(map[string]interface{}{
        "incr": func(i int) int {
            return i + 1
        },
    })
    _, err := tpl.Parse(tplDef)
    if err != nil {
        log.Fatal(err)
    }

    type T struct {
        Name string
    }

    type Whatever struct {
        MyList []T
    }

    w := Whatever{
        MyList: []T{
            {Name: "foo"},
            {Name: "bar"},
            {Name: "baz"},
        },
    }

    err = tpl.Execute(os.Stdout, w)
    if err != nil {
        log.Fatal(err)
    }
}

字符串
Playground的一个。

相关问题