我是新来的高朗人.当我想要用"文本/模板"制作一个超文本标记语言表格时,我遇到了一个问题.我没有得到任何关于如何制作序列号的参考资料.到目前为止,我所做的是:

<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 }}次,但出错了.有人能帮帮我吗?

推荐答案

使用自定义函数:

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.

Go相关问答推荐

如何在Deliverq中高效地传达客户依赖关系?

如何从google.golang.org/grpc/stats包中将golang中不同事件的输出进行组合,以获取func HandlePRC

如何在围棋中从多部分.Part中获取多部分.文件而不保存到磁盘?

`docker system df` 与 `/system/df` (docker api 端点)

Go struct 匿名字段是公开的还是私有的?

在 .go 文件中运行一个函数和在 Go 模板中调用它有什么区别?

Go http.FileServer 给出意外的 404 错误

有没有什么方法可以在不使用 if/else 的情况下在 Golang 中处理 nil 指针?

在 Go 模板中对照片使用随机 Int

如何在切片增长时自动将切片的新元素添加到函数参数

如何在时间范围内规范化数组的元素?

获取切片元素的地址是否意味着 Go 中元素的副本?

Golang Gin 绑定请求正文 XML 到 Slice

此代码如何生成内存对齐切片?

同时调用应该只获取一次数据

使用 oklog/run 来自 Go 编译器的错误(无值)用作值

函数调用中的类型参数panic

Go模板中的浮点除法

如何使用 context.WithCancel 启动和停止每个会话的心跳?

从 map 返回空数组而不是空字符串数组