4.6 文本和HTML模板
上面的例子仅仅给出了最简单的格式化,这种情况下,Printf函数足够用了。但是有的情况下格式化会比这个复杂得多,并且要求格式和代码彻底分离。这个可以通过text/template包和html/template包里面的方法来实现,这两个包提供了一种机制,可以将程序变量的值代入到文本或者HTML模板中。
模板是一个字符串或者文件,它包含一个或者多个两边用双大括号包围的单元——{{...}},这称为操作。大多数的字符串是直接输出的,但是操作可以引发其他的行为。每个操作在模板语言里面都对应一个表达式,提供的简单但强大的功能包括:输出值,选择结构体成员,调用函数和方法,描述控制逻辑(比如if-else语句和range循环),实例化其他的模板等。一个简单的字符串模板如下所示:
模板首先输出符合条件的issue数量,然后分别输出每个issue的序号、用户、标题和距离创建时间已过去的天数。在这个操作里面,有一个表示当前值的标记,用点号(.)表示。点号最开始的时候表示模板里面的参数,在这个例子中即是github.IssuesSearchResult。操作{{.TotalCount}}代表TotalCount成员的值,直接输出。{{range.Items}}和{{end}}操作创建一个循环,所以它们内部的值会展开很多次,这个时候点号(.)表示Items里面连续的元素。 ...
Get Go程序设计语言 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.