GoGenerateTools
go generate
is only useful if you have tools to use it with! Here is an incomplete list of useful tools that generate code.
- goyacc – Yacc for Go.
- stringer – Implements
fmt.Stringer
interface for enums. - gostringer – Implements
fmt.GoStringer
interface for enums. - jsonenums – Implements
json.Marshaler
andjson.Unmarshaler
interfaces for enums. - go-syncmap - Generates Go code using a package as a generic template for
sync.Map
. - go-syncpool - Generates Go code using a package as a generic template for
sync.Pool
. - go-atomicvalue - Generates Go code using a package as a generic template for
atomic.Value
. - go-nulljson - Generates Go code using a package as a generic template that implements
database/sql.Scanner
anddatabase/sql/driver.Valuer
. - go-enum - Generates Go code using a package as a generic template which implements interface
fmt.Stringer
|binary
|json
|text
|sql
|yaml
for enums. - enumer - Generates Go code that convert Go enum to/from strings.
- go-import — Performs auto import of non go files.
- gojson - Generates go struct definitions from example json documents.
- vfsgen - Generates a vfsdata.go file that statically implements the given virtual filesystem.
- goreuse - Generates Go code using a package as a generic template by replacing definitions.
- embedfiles - Embeds files into Go code.
- ragel - State machine compiler
- peachpy - x86-64 assembler embedded in Python, generates Go assembly
- bundle - Bundle creates a single-source-file version of a source package suitable for inclusion in a particular target package.
- msgp - A Go code generator for MessagePack
- protobuf - protobuf
- thriftrw - thrift
- gogen-avro - avro
- swagger-gen-types - go types from swagger specifications
- avo - generate assembly code with Go
- Wire - Compile-time Dependency Injection for Go
- sumgen - generate interface method implementations from sum-type declarations
- interface-extractor - generates an interface of a desired type, with only methods used within the package.
- deep-copy - creates a deep copy method for the given types.
- libfsm - fsm toolkit supporting (among others) Go and Go-flavored amd64 assembly for matching regexps
- re2c - lexer generator for C, C++ and Go
- re2dfa - Transform regular expressions into finite state machines and output Go source code
- pigeon - a PEG parser generator for Go