golang 模板语法

文章目录 (?) [+]

    测试用的变量和方法

    type struct Blog {
        Title string
    }
    
    map[string]interface{}
    
    type FuncMap map[string]interface{}
    
    func add(x, y int) int

    变量

    {{/* . 代表传入模板的 struct 或 map 变量 */}}
    <p>{{. Title}}</p>
    
    {{/* 定义变量的两种方法 */}}
    {{$name := "test"}}
    {{$name := .Title}}
    <p>{{$name}}</p>
    
    {{/* 创建封闭作用域*/}}
    {{with "hello"}}
    {{/* 此处的 . 即为 hello */}}
    <p>{{.}}</p>
    {{else}}
    {{/* 此处的 . 为原来的上下文 */}}
    <p>{{.}}</p>
    {{end}}
    
    {{/* 对于数组,切片,map 使用索引,相当于 array[2][3][4] */}}
    <p>{{index array 2 3 4}</p>

    管道

    {{/* 调用 FuncMap 中的函数 */}}
    <p>{{12.345 | printf "%.2f"}}</p>

    判断

    {{/* bool 类型判断  */}}
    {{if .conditon1}}
    <p>1</p>
    {{else if .conditon2}}
    <p>2</p>
    {{else}}
    <p>3</p>
    {{end}}
    
    {{/* 与 */}}
    {{if and .conditon1 .conditon2}}
    <p>&&</p>
    {{end}}
    
    {{/* 或 */}}
    {{if or .conditon1 .conditon2}}
    <p>||</p>
    {{end}}
    
    {{/* 非 */}}
    {{if not .conditon}}
    <p>!</p>
    {{end}}
    
    {{/* 等于 */}}
    {{if eq .conditon1 .conditon2}}
    <p>==</p>
    {{end}}
    
    {{/* 不等于 */}}
    {{if ne .conditon1 .conditon2}}
    <p>!=</p>
    {{end}}
    
    {{/* 小于 */}}
    {{if lt .conditon1 .conditon2}}
    <p>less than</p>
    {{end}}
    
    {{/* 小于等于 */}}
    {{if le .conditon1 .conditon2}}
    <p>less than equal</p>
    {{end}}
    
    {{/* 大于 */}}
    {{if gt .conditon1 .conditon2}}
    <p>greater than</p>
    {{end}}
    
    {{/* 大于等于 */}}
    {{if ge .conditon1 .conditon2}}
    <p>greater than or equal to</p>
    {{end}}

    遍历

    {{/* 遍历 map 或 slice */}}
    {{range $i, $v := .slice}}
    <p>index:{{$i}} value: {{$v}}</p>
    {{end}}
    
    {{range .slice}}
    <p>value: {{.field}}</p>
    <p>访问外部变量{{$.Title}}</p>
    {{end}}

    函数

    {{/* 调用模板方法 */}}
    <p>{{add 1 2}}</p>

    嵌套

    layout

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>{{.Title}}</title>
    </head>
    <body>
    {{/* 为了子模板获取父模板的变量应在其后加 . */}}
    {{template "article" .}}
    </body>
    </html>

    template

    {{define "article"}}
    <article>
        <header>{{.Header}}</header>
        <section>{{.Section}}</section>
        <footer>{{.Footer}}</footer>
    </article>
    {{end}}


    本文标题:golang 模板语法
    本文链接:https://lanseyujie.com/post/golang-template-syntax.html
    版权声明:本文使用「署名-非商业性使用-相同方式共享」创作共享协议,转载或使用请遵守署名协议。
    点赞 0 分享 0