You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go HTML模板如何在单行打印两个结构体数组的值?

问题原因

当前代码先完整遍历数组A生成所有对应单元格,再遍历数组B生成所有单元格,导致所有A的内容集中在一行,所有B的内容集中在另一行,完全不符合每行对应一组A和B元素的需求。

解决方案

通过索引同步遍历两个数组,确保每次循环同时取出A和B对应位置的元素,生成一行完整的表格内容。结合模板语法(从代码判断为Go模板),利用range的索引特性,搭配index函数获取B数组对应位置的元素即可解决。

修改后的代码如下:

{{ range $index, $ADetail := $A }}
<tr style='mso-yfti-irow:{{ add $index 2 }}'>
    <!-- 数组A对应的单元格 -->
    <td width=330 valign=top colspan=2 style='width:301.25pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
                                                                  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
        <p class=MsoNormal style='line-height:13.5pt'>
            <span style='sans-serif;color:#7F7F7F'>{{ $ADetail.Name }}</span>
        </p>
    </td>
    <td width=330 valign=top colspan=2 style='width:301.25pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
                                                                  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
        <p class=MsoNormal style='line-height:13.5pt'>
            <span style='sans-serif;color:#7F7F7F'>{{ $ADetail.Value }}</span>
        </p>
    </td>
    <!-- 数组B对应的单元格,通过索引获取对应元素 -->
    {{ with $BDetails := index $B $index }}
    <td width=330 colspan=3 valign=top style='width:301.25pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
                                                                  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
        <p class=MsoNormal style='line-height:13.5pt'>
            <span style='sans-serif;color:#7F7F7F'>{{ $BDetails.IPAddress }}</span>
        </p>
    </td>
    <td width=330 valign=top style='width:301.25pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
                                                                  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
        <p class=MsoNormal style='line-height:13.5pt'>
            <span style='sans-serif;color:#7F7F7F'>{{ $BDetails.Enabled }}</span>
        </p>
    </td>
    <td width=330 valign=top style='width:301.25pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
                                                                  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
        <p class=MsoNormal style='line-height:13.5pt'>
            <span style='sans-serif;color:#7F7F7F'>{{ $BDetails.IPv6 }}</span>
        </p>
    </td>
    {{ end }}
</tr>
{{ end }}
关键说明
  • 将<tr>标签移入range循环内部,确保每次循环生成一行独立的表格内容
  • 使用range $index, $ADetail := $A同时获取数组A的索引和对应元素
  • 通过index $B $index精准获取数组B中对应索引的元素,并用with语句简化后续元素调用
  • 修正了原代码中错误的</o:p>闭合标签

内容的提问来源于stack exchange,提问作者Kashif Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:44:53