Go言語テンプレートのif文の使い方を初心者向けに解説

JavaScriptを有効にしてください

まえがき

Go言語のテンプレート機能は、HTMLやテキストファイルを動的に生成する際に非常に便利な機能です。その中でも特に重要なのが条件分岐を行う「if文」です。今回は初心者の方向けに、Go言語テンプレートのif文の基本的な使い方から、andやorを使った複数条件の指定方法まで、わかりやすく解説していきます。

Go言語のテンプレート機能の基本的な使い方については下記記事をお読みください。
Go言語のテンプレート機能を初心者向けに解説

Goテンプレートのif文の基本的な使い方

Go言語のテンプレートでif文を使うには、以下のような構文を使います。

1
2
3
4
5
{{ if 条件式 }}
  条件が真(true)の場合に表示される内容
{{ else }}
  条件が偽(false)の場合に表示される内容
{{ end }}

例えば、テンプレートに渡した変数が空でない場合にのみ表示する場合は以下のようになります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import (
    "os"
    "text/template"
)

func main() {
    tmpl := template.Must(template.New("example").Parse(`
{{ if .Name }}
こんにちは、{{ .Name }}さん!
{{ else }}
名前が設定されていません。
{{ end }}
`))

    tmpl.Execute(os.Stdout, map[string]string{"Name": "もふもふ"})
}

実行すると以下のようになります。

1
こんにちは、もふもふさん!

もしNameが空の場合は以下のようになります。

1
tmpl.Execute(os.Stdout, map[string]string{"Name": ""})
1
名前が設定されていません。

andやorを使った複数条件の指定方法

Goテンプレートでは、複数の条件を組み合わせるためにandorを使うことができます。

andの使い方

andは複数の条件がすべて真の場合にのみ真となります。

1
2
3
4
5
{{ if and .IsMember .HasCoupon }}
  会員かつクーポンをお持ちの方限定の特典です!
{{ else }}
  特典を受け取る条件を満たしていません。
{{ end }}
1
tmpl.Execute(os.Stdout, map[string]bool{"IsMember": true, "HasCoupon": true})
1
会員かつクーポンをお持ちの方限定の特典です!

orの使い方

orは複数の条件のうち、どれか一つでも真であれば真となります。

1
2
3
4
5
{{ if or .IsAdmin .IsModerator }}
  管理者またはモデレーター専用ページです。
{{ else }}
  権限がありません。
{{ end }}
1
tmpl.Execute(os.Stdout, map[string]bool{"IsAdmin": false, "IsModerator": true})
1
管理者またはモデレーター専用ページです。

Goテンプレートのif文を使うメリット

Goテンプレートのif文を使うことで、以下のようなメリットがあります。

  • 動的なコンテンツ表示が可能になる
  • 条件に応じて表示内容を切り替えられるため、柔軟なテンプレート設計が可能になる
  • シンプルな構文で初心者でも理解しやすい

特にWebアプリケーション開発などでは、ユーザーの状態や権限に応じて表示内容を変えることが多いため、if文を使った条件分岐は非常に役立ちます。

Goテンプレートのif文を使う際の注意点

Goテンプレートのif文を使う際には、以下の点に注意しましょう。

  • 必ず{{ end }}でif文を閉じる必要があります。閉じ忘れるとエラーになります。
  • 条件式に渡す変数が存在しない場合、テンプレートの実行時にエラーになることがあります。変数が存在するかどうかを事前に確認しましょう。
  • 複雑な条件式はテンプレート内で書くと可読性が下がるため、Go側で事前に処理してシンプルな条件式を渡すようにしましょう。

あとがき

今回はGo言語のテンプレート機能におけるif文の基本的な使い方を初心者向けに解説しました。andやorを使った複数条件の指定方法も紹介しましたので、ぜひ実際の開発で活用してみてください。テンプレートを使いこなすことで、より柔軟で効率的な開発が可能になります。


スポンサーリンク

共有

もふもふ

プロフィール

著者
もふもふ
プログラマ。汎用系→ゲームエンジニア→Webエンジニア→QAエンジニア