golang爬坑:模板(template )处理(一)

  前段时间,有个任务:对一批go文件进行处理,提取go代码里面的GET、POST方法中的url以及调用方法名,比如这样

req.GET("/EditGet/xxx", gin.Uid(), r.getDycn)

  需要提取文件中类似这样的语句,这个可以用正则搞定,然后用提取的关键字去匹配模板,生成代码,这里用到了template。首先说说template的语法。

  Go语言的模板通过{{}}来包含需要在渲染时被替换的字段,{{.}}表示当前的对象。

  例如,你的对象是个结构体:

type Person struct {
    Name    string
    Age     int
    Emails   []string
    Jobs    []*Jobs
}

  那麼你可以写出这样的模板文件:

The name is {{.Name}}.
The age is {{.Age}}.

  这样就会替换掉结构体的成员。

接下来再看看循环,输出每个Email。

1 {{range .Emails}}
2  An email is {{.}}
3 {{end}}

嵌套字段需要用{{with ..}}{{end}}输出

{{with .Jobs}}
    {{range .}}
        An employer is {{.Employer}}
        and the role is {{.Role}}
    {{end}}
{{end}}

最后,来看看条件语句

{{if op exp1 [exp2]}}...{{end}}.

if后面的条件如果是一元的 则只写一个表达式,二元写俩。比如:

{{if gt (len .Name) 0}}

  可以判断Name是否为空,这里的len是template定义的函数,gt跟shell语法里的gt一样,其他函数就不一一列举了。还有template的其他语法,有兴趣的同学可以自己再找找资料,就不赘述了。

以上例子大都取 https://jan.newmarch.name/go/template/chapter-template.html

 

  

posted @ 2016-10-29 14:18  ynnnch  阅读(5637)  评论(0编辑  收藏  举报