Skip to main content

Get full access to 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス and 60K+ other titles, with a free 10-day trial of O'Reilly.

There are also live events, courses curated by job role, and more.

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 ...

Get 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Don’t leave empty-handed

Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.

It’s yours, free.

Get it now
Cover of Software Architecture Patterns

Check it out now on O’Reilly

Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.

Start your free trial Become a member now