ert*_*lin 2 templates go slice
我正在尝试使用以下模板填写表格:
<table class="table">
<tr>
<td>Repo name</td>
<td>Repo id</td>
</tr>
{{range $i, $e := .GitHubRepoNames}}
<tr>
<td>{{$e}}</td>
<td>{{index .GitHubRepoNames $i}}</td>
</tr>
{{end}}
</table>
Run Code Online (Sandbox Code Playgroud)
当我执行此模板时,它输出:
<table class="table">
<tr>
<td>Repo name</td>
<td>Repo id</td>
</tr>
<tr>
<td>https://api.github.com/repos/ertemplin/cah/issues{/number}</td>
<td>
Run Code Online (Sandbox Code Playgroud)
当我在没有{{index}}调用的情况下运行模板时:
<table class="table">
<tr>
<td>Repo name</td>
<td>Repo id</td>
</tr>
{{range $i, $e := .GitHubRepoNames}}
<tr>
<td>{{$e}}</td>
<td>{{$i}}</td>
</tr>
{{end}}
</table>
Run Code Online (Sandbox Code Playgroud)
它输出完整的范围:
<table class="table">
<tr>
<td>Repo name</td>
<td>Repo id</td>
</tr>
<tr>
<td>https://api.github.com/repos/ertemplin/cah/issues{/number}</td>
<td>0</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
什么可能导致输出在我的模板的第一个实例中被中断?
执行模板时,将返回错误:
var buf bytes.Buffer
err := tpl.Execute(&buf, map[string]interface{}{
"GitHubRepoNames": []string{
"https://api.github.com/repos/ertemplin/cah/issues{/number}",
},
})
fmt.Println(err, buf.String())
Run Code Online (Sandbox Code Playgroud)
错误是:
template:ex:9:20:在<.GitHubRepoNames>处执行"ex":无法在字符串类型中计算字段GitHubRepoNames
这意味着.正在改变$e.我不确定为什么你需要像这样做索引($e似乎它应该足够)但你可以这样做:
<td>{{index $.GitHubRepoNames $i}}</td>
Run Code Online (Sandbox Code Playgroud)
$ 由文档解释:
执行开始时,$设置为传递给Execute的数据参数,即dot的起始值.
| 归档时间: |
|
| 查看次数: |
2053 次 |
| 最近记录: |