Go Wiki: Well-known struct tags

Background

Go offers struct tags 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, 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

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
asn1 https://pkg.go.dev/encoding/asn1
bigquery https://pkg.go.dev/cloud.google.com/go/bigquery
bson https://pkg.go.dev/go.mongodb.org/mongo-driver/bson
cue https://pkg.go.dev/cuelang.org/go/cuego
datastore https://pkg.go.dev/cloud.google.com/go/datastore
db https://github.com/jmoiron/sqlx
dynamodbav https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/dynamodbattribute/#Marshal
egg https://github.com/andrewwphillips/eggql
feature https://github.com/nikolaydubina/go-featureprocessing
gorm https://pkg.go.dev/github.com/jinzhu/gorm
graphql https://github.com/samsarahq/thunder
json https://pkg.go.dev/encoding/json
mapstructure https://pkg.go.dev/github.com/mitchellh/mapstructure
parser https://pkg.go.dev/github.com/alecthomas/participle
protobuf https://github.com/golang/protobuf
reform https://pkg.go.dev/gopkg.in/reform.v1
spanner https://pkg.go.dev/cloud.google.com/go/spanner
toml https://pkg.go.dev/github.com/pelletier/go-toml
url https://github.com/google/go-querystring
validate https://github.com/go-playground/validator
xml https://pkg.go.dev/encoding/xml
yaml https://pkg.go.dev/gopkg.in/yaml.v2

This content is part of the Go Wiki.