如何在循环外使用模板变量?

grh*_*rhn 3 go go-templates

在go模板中,我想获取循环中的最后一条消息,以在循环外使用:

    {{range $m := .messages}}      
            <div>Message subject: {{$m.Subject}}</div>

            {{$lastMsg := $m}}
    {{end}}


    <div>The last message's subject: {{$lasMsg.Subject}}</div> 
Run Code Online (Sandbox Code Playgroud)

但这不起作用,并且出现此错误:

 undefined variable "$lastMsg"
Run Code Online (Sandbox Code Playgroud)

我也尝试过,{{.lastMsg := $m}}但随后得到:

 unexpected ":=" in operand
Run Code Online (Sandbox Code Playgroud)

那么我该如何解决呢?

san*_*noJ 7

您需要在范围循环外声明lastMsg变量,以便在循环外使用

{{$lastMsg := ""}} // declare outside the loop
{{range $m := .messages}}      
        <div>Message subject: {{$m.Subject}}</div>

        {{$lastMsg = $m}} // assign the value 
{{end}}
Run Code Online (Sandbox Code Playgroud)