1. Home
  2. /
  3. Go言語
  4. /
  5. Go言語Tips① 変数について

Go言語Tips① 変数について

Go言語Tips① 変数について

変数定義

Hugoのテンプレート内で{{ $title := .Title }}{{ $title = .Title }} のようにコロンをつけたり、付けなかったりする記述を見ます。

これはgo言語の書き方の特徴で、変数を定義する場合の省略記法です

title := "タイトル"

省略しない場合はこうなります

var title string = "タイトル"

変数のスコープ

go言語の変数スコープはif、for、switchなどのブロック内で有効です
if内などで新しく変数を定義するとifブロック内での変数になるので注意です。

    title := "タイトル"
    if true {
        fmt.Println(title)
        title := "タイトル2"
		fmt.Println(title)
    }
    fmt.Println(title)
タイトル
タイトル2
タイトル

変数の命名規則

go言語では変数名を短く、スコープも小さく、変数の寿命を短くすること推奨されます
処理が長くなる場合は細かい単位でメソッドに切り出します。

ですが、変数名がどうしても長くなってしまう場合はスネークケースで書きます

site_tile := "タイトル"

とgo言語の入門本で学びましたが、タイトルを忘れてしまいました。。

関連記事

Go言語Tips② Hugoで使われるlayoutの正体

Go言語Tips② Hugoで使われるlayoutの正体


Hugoで使われるlayoutですが実態はgo-templateという、いわゆるテンプレートエンジンです

https://pkg.go.dev/text/template


テンプレート内のハイフンありなしの違い

たまにHugoテンプレート内で{{ .Title }}{{- .Title -}}で書いてるものを見かけます この違いはハイフンを付けることで前後の空白を除去したい場合に使われます

ちなみに公式ドキュメントにあります
https://pkg.go.dev/text/template#hdr-Text_and_spaces


配列や連想配列の空チェック

Hugoを使う際、空ではない文字列or配列or連想配列のチェックする時に、最初はこんな感じで空チェックをしていたんですが

Hugoで年月別のアーカイブを作る方法

Hugoで年月別のアーカイブを作る方法

Hugoでアーカイブを作るには2種類ほど方法があります

①タグやカテゴリと同様にタクソノミーを設定する

config.ymlにarchiveを追加し

taxonomies:
  archive: archives

記事のフロントマターに年月を設定してあげれば

archives: ["2021年12月"]

こんな感じのデータが作成されます。この時「yyyy年mm月」の形式でないと年月でソートされないので注意です

    {{ .Site.Taxonomies.archives.Alphabetical.Reverse }}

    [
        {2021年12月 [WeightedPage(0,"Hugoで年月別のアーカイブを作る方法") WeightedPage(0,"HugoでFontawsomeを使う方法")]}
        {2021年10月 [WeightedPage(0,"Hugoに検索機能を追加しよう")]}
        {2021年9月 [WeightedPage(0,"Hugoを使い始めた人に捧げるTips11選") WeightedPage(0,"Go言語Tips② Hugoで使われるlayoutの正体")]}
    ]

新しく作る記事はarchetypesを更新してあげれば問題ないのですが、すでにある記事にarchiveを追加してあげるのは結構大変ですよね