无法访问Go模板中范围内的模板值或结构值

时间:2019-07-24 21:20:17

标签: go go-templates

我在执行模板时传递了一个结构。在遍历属于同一结构一部分的slice变量时,无法访问struct内部的字符串变量。

我尝试在访问变量时使用$作为前缀。 我还尝试在模板本身中创建一个变量,并在范围内调用它。我看不到该新变量在范围之外但不能在内部访问。

package main
type landing_page Struct {
    Login_user string
    Versions_tagged []oradatabase.Tag_versions
}

package oradatabase
// partial code
type Tag_version struct {
     User_id string,
     Rel_name string
}

所有这些结构均已初始化并正确分配了值,因为我可以毫无问题地访问模板范围内的值。

template : landing_page.html
Trial - 1
---------
<table>
<thead><tr>
<th>h1</th>
<th>h2</th>
<th>h3</th>
</tr>
</thead>
<tbody>
{{ range .Versions_tagged}}
<tr>
<td>{{.User_id}}</td>
<td>{{.Rel_Name}}</td>
<td>{{$.Login_user}}</td>
</tr>
{{end}}
</tbody>
</table>

Trial -2
---------
{{ $login_user := .Login_user}}
<table>
<thead><tr>
<th>h1</th>
<th>h2</th>
<th>h3</th>
</tr>
</thead>
<tbody>
{{ range .Versions_tagged}}
<tr>
<td>{{.User_id}}</td>
<td>{{.Rel_Name}}</td>
<td>{{$login_user}}</td>
</tr>
{{end}}
</tbody>
</table>

通过这两个试验-即将到达内部的login_user为null(无值),而可以从外部访问。无法找出问题所在。 转到版本:1.11.4

变量Login_user的值应在模板范围内可用。控制台上没有错误。它根本不会在范围内为Login_user打印任何内容,并且循环也会在该阶段终止。

0 个答案:

没有答案