[Go言語]text/templateの使い方メモ

こんにちは。KOUKIです。

最近、Go言語のtext/templateパッケージを使ってテンプレート活用プログラムを作成したので、text/templateの使い方をまとめておこうと思います。

事前準備

ワークディレクトリを作成してください。

標準出力にテンプレートを表示する

text/templateはGo言語でテンプレートを使ったプログラムを実装するのを手助けしてくれるパッケージです。

ここでは、tpl.gohtmlがテンプレートです。簡単にサンプルを書いてみました。

この内容を標準出力に表示します。

ttemplate.ParseFilesにて、テンプレートファイルをパースし、template.Executeの第一引数にos.Stdout(標準出力)を指定するとテンプレートの中身を標準出力に表示することが可能です。

プログラムを実行してみましょう。

ファイルに出力する

次に、テンプレート内容をファイルに出力する方法をみていきます。

KOUKI
KOUKI

これが中々情報がなかったんですよね。

template.Execは第一引数にio.Writerを渡します。

Writerはinterfaceで以下のようなコードです。

つまり、Writeメソッドを実装していれば第一引数に渡すことが可能です。このあたりは、Go言語を知らないとわからないですね。。

例えば、osパッケージのCreateメソッド(ファイル作成)を見てみましょう。

この関数は、*Fileを返しますね。定義は以下のようになっています。

そしてこれはWriteメソッドを実装しています。

Goではインターフェースに定義した関数を実装すると暗黙的にインターフェースを継承したことにしてくれます。そのため、ExecメソッドにCreateメソッドの戻り値を渡すことが可能です。

このプログラムを実行するとindex.htmlファイルが出力されます。

おわりに

ここでは、標準出力とファイルへの書き込み方法を紹介しました。

しかし、あくまで機能としてはごくごく一部です。

また便利な使い方を見つけたら、追記していこうと思います。