3.5 タグを使って構造体にメタデータを埋め込む

Javaなど他の言語では、データのマッピングなどを自動で行うために、アノテーションを使ってフィールドやメソッドにメタデータを付与して利用します。Goでそれに該当するものは構造体のタグです。タグそのものは単なるテキスト情報で、コードの動作に直接影響を与えることはありませんが、このタグ情報を読み取って機能するライブラリを利用することで、構造体のデータを何かに変換したり、データファイルをロードして構造体のインスタンスに値を入れたりできます。

3.5.1 タグの記法

フィールド名 型 `json:"field"`

タグはGoの文法としてはどのような文字列も入れられることになっています。しかし、一般的な慣習として、次のような形式の文字列を1つ、複数の場合はバッククォートで囲んだ値をスペース区切りで、入れることになっています。reflectパッケージを使うと、このキー名を元にコロンの後ろの情報を取得できます。キー名が異なれば、1つのフィールドに対して複数のライブラリ向けのタグを付与できます。

キー:"メタデータ"

タグを利用するパッケージには次のようなものがあります。

表3-2: タグを利用するパッケージ

パッケージ名

説明

encoding/jsonやencoding/xml

JSONやXMLなどのデータ交換フォーマットとの相互変換

github.com/gorilla/schema

HTMLのフォームやヘッダーとのデータ総合変換

github.com/jmoiron/sqlxやgorm.io/gorm、gocloud.dev/docstore

データベースの行の読み書き

github.com/kelseyhightower/envconfig ...