blob: 01b2a0adf370cb7856eed7f3f5295abaafe99340 [file] [log] [blame] [view]
Ingo Oesera4e3bbb2016-08-16 17:57:15 +02001# Well Known Struct Tags
2## Background
3
4Go offers [struct tags](https://golang.org/ref/spec#Tag) which are discoverable via reflection. These enjoy a wide range of use in the standard library in the JSON/XML and other encoding packages. The community welcomed them and build ORMs, further encodings, flag parsers and much more around them.
5
6Since esp. while handling encodings and ORMs single sourcing data structures is beneficial for data structures.
7
8## Problem description
9Due to increased usage of Go and thus Go [struct tags](https://golang.org/ref/spec#Tag), clashes become inevitable.
10
11## Solution
12The list below is a best effort to document well known struct tags used by packages which available to the public.
13
14## Format of the list
15* Struct tag as extracted by calling https://godoc.org/reflect#StructTag.Get with this tag as the `key` argument.
16* Documentation link of this package using https://godoc.org
17
18### Example entry
19Tag | Documentation
20----|-----
21xml | https://godoc.org/encoding/xml
22
23### Change Management
24List entries can be added by anyone who creates a public package where a new tag is used.
25List entries can be removed when the links to the package documentation stops working or the author(s) of that package requests it.
26
27## List of Well Known Struct Tags
28Tag | Documentation
29----|-----
30xml | https://godoc.org/encoding/xml
31json | https://godoc.org/encoding/json
32asn1 | https://godoc.org/encoding/asn1