2

问题是第一个示例程序中列出的text/template 构建一个套用信函。

虽然用 Range 解析字母,但为什么.Gift需要通过

{{with .Gift}} ..... {{.}}  {{end}}

.Name并被.Attended直接解决。为什么?

4

1 回答 1

2

因为Gift是可选的,如果没有Gift提供,我们不想感谢信中的任何内容;但如果Gift提供,我们想说谢谢你的礼物。

仅当{{with}}传递的管道不为空时,操作才会有条件地执行其主体:

{{with pipeline}} T1 {{end}}
    If the value of the pipeline is empty, no output is generated;
    otherwise, dot is set to the value of the pipeline and T1 is
    executed.

因此,示例包含以下内容:

{{with .Gift -}}
Thank you for the lovely {{.}}.
{{end}}

这意味着如果.Gift不为空,则在输出(字母)中包含“谢谢”句子。如果.Gift为空,“谢谢”将被省略。

于 2016-04-27T08:08:37.420 回答