Hugoのif文について解説

こんにちはnasustです。 Hugoのテンプレートでif文があります。しかし、いざ使用してみると細かい動作が分かりにくいです。今回は基本的から細かい部分まで解説します。

変数が真として扱われる場合

if文で変数が真として扱われる場合を解説します。 まず偽として扱われる値を挙げます。

  • false
  • 0
  • 空文字

これらの値が偽として扱われます。つまり、これの逆が真として扱われます。

{{ $var := 1 }}
{{ if $var }}
    <!-- 真 -->
{{ end }}

{{ $var = true }}
{{ if $var }}
    <!-- 真 -->
{{ end }}

{{ $var = "var" }}
{{ if $var }}
    <!-- 真 -->
{{ end }}
html

変数が等しい場合

変数と変数を比較して等しいか判定する場合はeqの関数を使用します。

{{ $var1 := 1 }}
{{ $var2 := 1 }}
{{ if eq $var1 $var2 }}
    <!-- 真 -->
{{ end }}
html

変数が等しくない場合

変数と変数を比較して等しくないか判定する場合はneの関数を使用します。

{{ $var1 := 1 }}
{{ $var2 := 2 }}
{{ if ne $var1 $var2 }}
    <!-- 真 -->
{{ end }}
html

変数の大小を比較する場合

変数と変数の大小を比較する場合は、lt,le,gt,geの関数を使用します。

{{ $var1 := 1 }}
{{ $var2 := 2 }}

{{ if lt $var1 $var2 }}<!-- $var1 < $var2 -->
    <!-- 真 -->
{{ end }}

{{ if le $var1 $var2 }}<!-- $var1 <= $var2 -->
    <!-- 真 -->
{{ end }}

{{ $var1 = 2 }}
{{ $var2 = 1 }}

{{ if gt $var1 $var2 }}<!-- $var1 > $var2 -->
    <!-- 真 -->
{{ end }}

{{ if ge $var1 $var2 }}<!-- $var1 >= $var2 -->
    <!-- 真 -->
{{ end }}
html

偽の値を真として扱いたい場合

変数の判定で偽である場合を真として扱いたい場合はnotの関数を使用します。

{{ $var := 0 }}
{{ if not $var }}
    <!-- 真 -->
{{ end }}

{{ $var = false }}
{{ if not $var }}
    <!-- 真 -->
{{ end }}

{{ $var = "" }}
{{ if not $var }}
    <!-- 真 -->
{{ end }}
html

複数の値を比較したい場合

複数の変数を比較して判定したい場合は、andまたはorを使用します。andは複数の変数が全て真である場合、真になります。orは複数の変数のいずれかが真である場合、真となります。

{{ $var1 := 1 }}
{{ $var2 := 1 }}
{{ $var3 := 2 }}
{{ $var4 := 2 }}

{{ if and (eq $var1 $var2 ) (eq $var3 $var4) }}
    <!-- 真 -->
{{ end }}

{{ $var1 = 1 }}
{{ $var2 = 1 }}
{{ $var3 = 2 }}
{{ $var4 = 3 }}

{{ if or (eq $var1 $var2 ) (eq $var3 $var4) }}
    <!-- 真 -->
{{ end }}
html
prevnext