傳送門: 柏鏈專案學院
模板是將乙個事物的結構規律予以固定化、標準化的成果,它體現的是結構形式的標準化。對於我們程式設計師來說,更直白的理解是;對於要輸出的內容,個人位置需要引數化填充,需要填充的引數位置是固定的,輸出的內容是有統一標準的。就像是我們小時候做的填空題,題目固定,有固定的位置需要填充,模版就是原理。
go語言開發了專門的packge用於支援模版程式設計,我們開發過程中,有時候會碰到模版程式設計得到情況,比如想要實現自動化的輸出一些用於其他工程執行的有效**,或者形成一些前端頁面,都會用到模版程式設計。
go語言中模版程式設計分為兩個大方向,一種是真的前端的,是在html/template下,還有乙個是針對文字的,在text/template下,兩者套路類似,我們來說一下對於文字的處理。
模版程式設計可分為4步:
我們可以先看官方示例給的**,把步驟重新認識一遍。
type inventory struct
sweaters := inventory
tmpl, err := template.new("test").parse("} items are made of }")
if err != nil
err = tmpl.execute(os.stdout, sweaters)
if err != nil
所謂的定義模版就是parse中的內容:
} items are made of }
template呼叫new以及後面的parse就是建立模版:
tmpl, err := template.new("test").parse("} items are made of }")
if err != nil
模版資料的準備是指結構定義和資料準備:
type inventory struct
sweaters := inventory
模版執行是execute,注意模版執行時需要指定輸出描述符(可以是某個檔案或者標準輸出,對應的go語言中的io.writer)
err = tmpl.execute(os.stdout, sweaters)
上述例子就是乙個最為簡單的模版程式設計,更詳盡的可以看這裡:官方詳細資料
上述例子除了闡述模版程式設計的四步之外,還有乙個重要資訊,模版程式設計在執行的時候,對資料結構體有要求,模版使用}包含的變數名字必須在結構體有其對應,否則執行的時候將不能成功。
下面是模版程式設計裡的一些actions介紹。
} 注釋
} 模版的變數
} t1 } 如果pipeline為空,則t1不會執行,
} t1 } t0 } 這是在上面的基礎上增加了else分支
} t1 } t0 } 當然還可以else if,這些對熟悉程式設計的人來說不算什麼
} t1 } 這個要求pipeline是乙個陣列,可以迴圈輸出t1
} t1 } t0 } 這個就是pipeline為空則執行t0
} t1 } with和if類似,如果pipeline存在,則執行t1
} t1 } t0 } 同樣的else分支處理
我們來看一些複雜點的例子:
package main
import (
"fmt"
"os"
"text/template"
)// define a template.
const letter = `
dear },
}it was a pleasure to see you at the wedding.}
it is a shame you couldn't make it to the wedding.}
}thank you for the lovely }.
}best wishes,
josie
`func main()
var recipients = recipient,
, ,
} // create a new template and parse the letter into it.
t := template.must(template.new("letter").parse(letter))
// execute the template for each recipient.
for _, r := range recipients
}}
上述**是乙個寫信的模版,收信方是乙個固定填充位置,attended是乙個附加資訊,如果為真,則為受邀參加婚禮,為假則不被邀請。gift則是對禮物的描述,如果禮物不為空,則該收信人會有禮物,否則沒有。
根據資料情況recipients來看,只有第乙個人受邀參加婚禮,前兩個人會有禮物,所以最終的執行結果如下:
Go 語言程式設計
課程名稱 go 語言程式設計 課程時間 2014年7月30日 週三 20 50 22 00 課程安排 20 50 21 00 通過郵件位址登入網路課堂 21 00 22 00 主題演講 徐立 與qa ps 課程諮詢 入qq群 csdn技術交流 群號是303806405 課程名稱 go 語言程式設計 ...
Go語言之Go語言網路程式設計
go語言的 net 包中有乙個 tcpconn 型別,可以用來建立 tcp 客戶端和 tcp 伺服器端間的通訊通道,tcpconn 型別裡有兩個主要的函式 func c tcpconn write b byte n int,err os.error func c tcpconn read b byt...
Go基礎程式設計 Go語言介紹
2009年11月10日,go語言正式成為開源程式語言家庭的一員。go語言 或稱golang 是雲計算時代的c語言。go語言的誕生是為了讓程式設計師有更高的生產效率,go語言專門針對多處理器系統應用程式的程式設計進行了優化,使用go編譯的程式可以媲美c或c 的速度,而且更加安全 支援並行程序。開發人員...