注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m
どうもこんにちわ!マツウラです。
前回はDatastoreインターフェースにおいてGo言語特有の機能であるPropertyLoadSaverについてでした。
今回はプロパティのタグ付け機能について見てゆきます。
参考:The datastore package - Go — Google Developers The datastore package
プロパティのタグ
フィールドは`datastore:"name,options"`
タグを持つことが出来ます(バッククォートも含みます)。
`name`
はプロパティ名であり、"."で結合される1つ以上のGoの識別子である必要があり、小文字で始めることができます。
`name`
が空であればフィールド名を使用することになります。
`name`
に"-"ハイフンを付けた場合、データストアはそのフィールドを無視します。
`options`
に"noindex"を付けると、フィールドはインデックス付けされません。
`options`
に特に指定するオプションがなければ、タグのコンマは省略して構いません。
現在のところ、他にオプションはありません。
プロパティのタグ付け例
また500文字を超える文字列については、格納するためフィールドに"noindex"でタグ付けする必要があります。
プロパティのタグ付け例を次に示します。
type TaggedStruct struct { A int `datastore:"a,noindex"` B int `datastore:"b"` C int `datastore:",noindex"` D int `datastore:""` E int I int `datastore:"-"` J int `datastore:",noindex" json:"j"` }
それでは上記のタグ付け例をそれぞれ見てゆきます。
通常はフィールド名がそのままプロパティ名となります。
しかしタグ付けを行うと、指定した名称に変更することができます。
フィールドAおよびBは、それぞれ小文字のaおよびbに変更しています。
フィールドはデフォルトでインデックス付けされます([]byteを除く)。
しかしnoindexタグを付けたフィールドについてはインデックス付けが行われません。
フィールドA, C, Jの3つで指定されています。
フィールドDでは何の指定もされておらず、フィールドEと同様の意味になります。
特定のフィールドをデータストアに格納しないようにするには、ハイフン("-")をタグ付けします。
フィールドIで指定されています。
フィールドJはデータストアタグの他にjsonタグも持っています。
Go言語では構造体に文字列リテラルタグを持つことが出来ます。
詳細はThe Go Programming Language Specification - The Go Programming Language #Struct typesを御覧ください。
今回はタグ付け機能についてでした。
次回は構造化プロパティについて取り上げる予定です。