39

私は mgo (Go 用の MongoDB ドライバー) の使用方法を見つけようとしてきましたが、この構造体宣言に出くわしました:

type Something struct {
    Id bson.ObjectId "_id,omitempty"
    Name string
}

最初の要素 (Id) の構文がよくわかりません。type として宣言されていることは理解していbson.ObjectIdますが、文字列リテラルはそこで何をしているのですか?

私の質問は、mgo ドライバーの機能についてではなく、
この奇妙な<name> <type> <string_literal>構文についてです。

Go の仕様については何も見つかりませんでした。また、Google で検索する方法もわかりません。

4

1 に答える 1

51

言語仕様の構造体型セクションで説明されています。

フィールド宣言の後には、オプションの文字列リテラル tagが続く場合があります。これは、対応するフィールド宣言内のすべてのフィールドの属性になります。タグは リフレクション インターフェイスを介して表示されますが、それ以外の場合は無視されます。

// A struct corresponding to the TimeStamp protocol buffer.
// The tag strings define the protocol buffer field numbers.
struct {
    microsec  uint64 "field 1"
    serverIP6 uint64 "field 2"
    process   string "field 3"
}
于 2012-07-13T18:12:23.373 に答える