douquanqiao6788 2014-07-21 11:05 采纳率: 100%
浏览 60
已采纳

如何解析Go模板范围之外的变量?

I have two structs as below and I need to render the data on a template using the templates pack. I get this error

<.Email>: Email is not a field of struct type Notes.

The issue seems to be that only fields of the range struct seem to be available within the range loop so I'm wondering how I can import fields from outside the range struct (e.g. the Email string).

The behavior is quite unexpected.

type notes struct{
    Note string
    sf string
}

type uis struct{
    notes []Note
    Email string
}

var ui uis

HTML

{{range .notes}}
    {{.Email}} {{.sf}}
    {{end}}

Email {{.Email}}

I've checked the godocs but they seem quite useless.

  • 写回答

1条回答 默认 最新

  • duankuai6991 2014-07-21 11:17
    关注

    From the documentation:

    When execution begins, $ is set to the data argument passed to Execute, that is, to the starting value of dot.

    Therefore, you can use this:

    {{range .notes}}
        {{$.Email}} {{.sf}}
    {{end}}
    
    Email {{.Email}}
    

    (Note the dollar sign inside the range)

    Playground link: http://play.golang.org/p/XiQFcGJEyR

    Side note: Next time try to provide proper code and a better explanation. As it stands, I think I've answered this, but I cannot be sure. Your code doesn't compile - for example, type names are wrong/mixed with members and you have unexported fields so they cannot be accessed by the templates.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助