mirror of
https://github.com/golang/go
synced 2024-11-05 18:36:08 +00:00
- language for struct field tags
DELTA=17 (15 added, 0 deleted, 2 changed) OCL=18177 CL=18184
This commit is contained in:
parent
dc6bd11ce8
commit
2e90e5424e
1 changed files with 17 additions and 2 deletions
|
@ -4,7 +4,7 @@ The Go Programming Language Specification (DRAFT)
|
|||
Robert Griesemer, Rob Pike, Ken Thompson
|
||||
|
||||
----
|
||||
(October 28, 2008)
|
||||
(October 30, 2008)
|
||||
|
||||
|
||||
This document is a semi-formal specification of the Go systems
|
||||
|
@ -1094,7 +1094,8 @@ identifier may be declared twice and all field types must be complete
|
|||
types (§Types).
|
||||
|
||||
StructType = "struct" [ "{" [ List<FieldDecl> ] "}" ] .
|
||||
FieldDecl = IdentifierList CompleteType | TypeName .
|
||||
FieldDecl = (IdentifierList CompleteType | TypeName) [ Tag ] .
|
||||
Tag = string_lit .
|
||||
|
||||
// An empty struct.
|
||||
struct {}
|
||||
|
@ -1135,6 +1136,20 @@ Fields and methods (§Method declarations) of an anonymous field become directly
|
|||
accessible as fields and methods of the struct without the need to provide the
|
||||
type name of the respective anonymous field (§Selectors).
|
||||
|
||||
A field declaration may be followed by an optional string literal tag which
|
||||
becomes an ``attribute'' for all the identifiers in the corresponding
|
||||
field declaration. The tags are available via the reflection library but
|
||||
are ignored otherwise. A tag may contain arbitrary application-specific
|
||||
information (for instance protocol buffer field information).
|
||||
|
||||
// A struct corresponding to the EventIdMessage protocol buffer.
|
||||
// The tag strings contain the protocol buffer field tags.
|
||||
struct {
|
||||
time_usec uint64 "1";
|
||||
server_ip uint32 "2";
|
||||
process_id uint32 "3";
|
||||
}
|
||||
|
||||
Forward declaration:
|
||||
A struct type consisting of only the reserved word "struct" may be used in
|
||||
a type declaration; it declares an incomplete struct type (§Type declarations).
|
||||
|
|
Loading…
Reference in a new issue