0Pricing
Go Academy · レッスン

構造体タグとは

フィールドにメタデータを付加します

「構造体タグとは」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。

構造体タグとは

構造体タグは、構造体のフィールドに付加されたメタデータの文字列です。フィールドの値には影響しませんが、それを読み取るライブラリに指示を渡します。

タグの構文

タグはフィールドの型の後に記述し、raw文字列リテラルで囲みます。各タグはkey:"value"のペアです。複数のペアは空白で区切ります。

典型的なタグはjson:"name"のようになります。

タグ付き構造体

ここでは、エンコーダーに小文字のキー名を使わせるjsonタグをフィールドに付けています。

package main

import "fmt"

type User struct {
	Name string "json:\"name\""
}

func main() {
	u := User{Name: "Ann"}
	fmt.Println(u.Name)
}

タグは単なるメタデータ

タグは、コードからフィールドを使う方法を変えません。u.Nameは通常どおり機能します。タグが意味を持つのは、リフレクションを通じてタグを調べるライブラリに対してだけです。

1つのフィールドに複数のタグ

1つのフィールドに複数のタグキーを持たせ、それぞれを異なるライブラリで使うことができます。

package main

import "fmt"

type Product struct {
	Name string "json:\"name\" db:\"product_name\""
}

func main() {
	p := Product{Name: "Pen"}
	fmt.Println(p.Name)
}

よく使われるタグキー

よく使われるタグキーには、次のようなものがあります。

  • json - JSONエンコーディング
  • xml - XMLエンコーディング
  • db - データベースの列マッピング
  • validate - バリデーションルール

リフレクションによるタグの読み取り

reflectパッケージを使うと、実行時にタグを読み取れます。field.Tag.Get("json")はjsonキーの値を返します。

package main

import (
	"fmt"
	"reflect"
)

type User struct {
	Name string "json:\"name\""
}

func main() {
	t := reflect.TypeOf(User{})
	f := t.Field(0)
	fmt.Println(f.Tag.Get("json"))
}

Tag.Getメソッド

Tag.Get(key)はキーの値を返し、キーが存在しない場合は空文字列を返します。Tag.Lookup(key)は、キーが存在したかどうかも報告します。

package main

import (
	"fmt"
	"reflect"
)

type User struct {
	Name string "json:\"name\""
}

func main() {
	f := reflect.TypeOf(User{}).Field(0)
	val, ok := f.Tag.Lookup("json")
	fmt.Println(val, ok)
}

タグ形式の規約

標準的なタグ形式は、コロンの前後に空白を入れないkey:"value"です。ライブラリはこの規約を想定しています。形式が正しくないタグは、黙って無視されることがあります。

タグを使う理由

タグを使うと、別の設定ファイルではなく、マッピング規則を対象のフィールドのそばに置けます。1つの構造体で、タグに基づいてJSON出力、データベースの行、バリデーションに対応できます。

非公開フィールドのタグ

非公開(小文字の)フィールドに付けたタグはリフレクションで確認できますが、ほとんどのエンコーダーは非公開フィールド自体を完全にスキップします。シリアライズしたいフィールドは公開(大文字)にしてください。

確認問題

構造体タグの目的は何ですか。

まとめ

構造体タグ:

  • フィールドにkey:"value"形式で付加するメタデータです
  • 通常のコードには影響せず、リフレクションで読み取ります
  • json、xml、db、validateなどで使われます

よくある質問

「構造体タグとは」レッスンは無料ですか?

はい。「構造体タグとは」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。

「構造体タグとは」で何を学びますか?

フィールドにメタデータを付加します ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Go Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「構造体タグとは」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGo Academyレッスンでコードを書いて実行できますか?

はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 構造体タグとは
  2. JSONタグ
  3. バリデーションライブラリ
  4. カスタムタグの解析
← Go Academyに戻る