Site for Go tools crafters: combined documentation for go-toolsmith packages, external references and other useful resources.

There are two major project goals:

  1. Provide reusable libraries that make Go tools implementation easier.
  2. Knowledge sharing. Make tools development less frustrating by providing docs for parts that are not easy to grasp and/or hard to find on the internet for whatever reason.


List of packages maintained under go-toolsmith project.

astinfo GoDoc

Package astinfo records useful AST information like node parents and such.

astcopy GoDoc

Package astcopy implements Go AST deep copy operations.

astequal GoDoc

Package astequal provides AST (deep) equallity check operations.

astfmt GoDoc

Package astfmt implements ast.Node formatting with fmt-like API.

astp GoDoc

Package astp provides AST predicates.

astcast GoDoc

Package astcast wraps type assertion operations in such way that you don’t have to worry about nil pointer results anymore.

strparse GoDoc

Package strparse provides convenience wrappers around go/parser for simple expr/stmt/decl parsing from string.

typep GoDoc

Package typep provides type predicates.


Projects that use go-toolsmith and are willing to share that fact.