Go 言語では、構造体を使用して結合されたデータ型を定義できます。タグは Go 言語のユニークな概念であり、構造体のフィールドにメタ情報を付加することができます。このメタ情報は実行時のリフレクションを通じて取得できます。
構造体で定義されたフィールドの後に、一連の記号で囲まれた文字列を使用して、このフィールドのタグを表すことができます。別個の識別子またはスペースで区切られたリストを使用できます。 Tag の構文は次のとおりです。
type StructName struct { FieldName FieldType `TagKey:"TagValue"` }
ここで、FieldName
は宣言されたフィールド名を表し、FieldType
はフィールド タイプを表し、TagKey
TagValue
はそれぞれタグのキーと値を表します。複数のキーと値のペアがある場合は、スペースを使用してそれらを区切ります。
Go 言語では、リフレクションを使用して構造体とそのフィールドを取得でき、reflect.StructTag
型メソッドを使用してフィールドのタグを取得できます。例は次のとおりです。
package main import ( "fmt" "reflect" ) type User struct { Name string `json:"name" log:"true"` Age int `json:"age" log:"false"` } func main() { user := User{ Name: "Alice", Age: 18, } t := reflect.TypeOf(user) for i := 0; i < t.NumField(); i++ { field := t.Field(i) fmt.Printf("%s: %s\n", field.Name, string(field.Tag)) fmt.Printf("json: %s\n", field.Tag.Get("json")) fmt.Printf("log: %s\n", field.Tag.Get("log")) } }
上の例では、User という名前の構造体を作成し、その中に Name と Age という 2 つのフィールドを定義し、リフレクションを使用して構造体の情報を取得し、出力します。各フィールドのタグ。 Tagを出力する際には、Tag.Get()
メソッドを使用して、指定されたTagキーの値を取得します。出力結果は次のとおりです。
Name: json:"name" log:"true" json: name log: true Age: json:"age" log:"false" json: age log: false
フィールドのタグ情報を出力するときに、string()
メソッドを使用して reflect.StructTag# を変換していることがわかります。 ## より便利な出力のための文字列としての情報のタイプ。
encoding パッケージのタグを使用して、シリアル化中に日付タイプの定義などのオプションを指定することです。 ## 3 つのフィールド #year
、
、Day
はそれぞれ json
キーを使用し、JSON 形式のデータにシリアル化するときの名前を指定します。このようにして、Date 型データを JSON 形式にシリアル化すると、JSON ライブラリは指定した方法でデータを処理します。
以上がgolangでタグを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。