2012-07-13 14 views
22

Próbowałem dowiedzieć się, jak korzystać z MgO (sterownik MongoDB dla Go) i natknąłem tej deklaracji struct:Dziwny rodzaj składni definicji w Golang (imię i nazwisko, a następnie wpisz, a następnie ciąg dosłowny)

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

Nie bardzo rozumiem składnię pierwszego elementu (Id). Rozumiem, że jest zadeklarowany jako typ bson.ObjectId, ale co tam robi literał ciągu?

Moje pytanie nie dotyczy funkcjonalności sterownika mgo, ale to dziwna składnia <name> <type> <string_literal>.

Nie mogłem znaleźć niczego w specyfikacjach Go i nie wiem, jak to zrobić w Google.

+0

Zobacz więcej informacji i przykładów tutaj: [Co to zastosowanie (-a) do znaczników w Go?] (Https://stackoverflow.com/questions/10858787/what-are-the-uses- for-tags-in-go/30889373 # 30889373) – icza

Odpowiedz

37

Jest to wyjaśnione w sekcji Struct types z language specification:

Oświadczenie pole może być stosowane przez opcjonalny ciąg dosłowne tag, która staje się atrybut dla wszystkich pól w odpowiedniej deklaracji pola. Znaczniki są widoczne przez: reflection interface, ale są w inny sposób ignorowane.

// 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" 
} 
+0

Dzięki! Tęsknie za tym. –

+0

w szczególności, w przypadku mgo, tag ustawi klucz, który będzie używany podczas kodowania struct jako bson. Tak działa również pakiet encoding/json. W przeciwnym razie Go używałby kluczy początkowych. – jorelli

Powiązane problemy