blob: 1b7a3bab44801358d0fa2c36c10391581bed89b5 [file] [log] [blame] [view]
---
title: Well-known struct tags
---
## Background
Go offers [struct tags](https://go.dev/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 has built ORMs, further encodings, flag parsers and much more around them since, especially for these tasks, single-sourcing is beneficial for data structures.
## Problem description
Due to increased usage of Go and thus Go [struct tags](https://go.dev/ref/spec#Tag), clashes become inevitable.
## Solution
The list below is a best effort to document well-known struct tags used by packages which are available to the public.
## Format of the list
* Struct tag as extracted by calling https://pkg.go.dev/reflect#StructTag.Get with this tag as the `key` argument.
* Documentation link of this package using https://pkg.go.dev
### Example entry
Tag | Documentation
----|-----
xml | https://pkg.go.dev/encoding/xml
### Change Management
List entries can be added by anyone who creates a public package where a new tag is used.
List entries can be removed when the links to the package documentation stops working or the author(s) of that package requests it.
## List of well-known struct tags
Tag | Documentation
----------|---------------
xml | https://pkg.go.dev/encoding/xml
json | https://pkg.go.dev/encoding/json
asn1 | https://pkg.go.dev/encoding/asn1
reform | https://pkg.go.dev/gopkg.in/reform.v1
dynamodbav | https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/dynamodbattribute/#Marshal
bigquery | https://pkg.go.dev/cloud.google.com/go/bigquery
datastore | https://pkg.go.dev/cloud.google.com/go/datastore
spanner | https://pkg.go.dev/cloud.google.com/go/spanner
bson | https://pkg.go.dev/go.mongodb.org/mongo-driver/bson
gorm | https://pkg.go.dev/github.com/jinzhu/gorm
yaml | https://pkg.go.dev/gopkg.in/yaml.v2
toml | https://pkg.go.dev/github.com/pelletier/go-toml
validate | https://github.com/go-playground/validator
mapstructure | https://pkg.go.dev/github.com/mitchellh/mapstructure
parser | https://pkg.go.dev/github.com/alecthomas/participle
protobuf | https://github.com/golang/protobuf
db | https://github.com/jmoiron/sqlx
url | https://github.com/google/go-querystring
feature | https://github.com/nikolaydubina/go-featureprocessing
graphql | https://github.com/samsarahq/thunder
egg | https://github.com/andrewwphillips/eggql