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

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM