January 2020
Intermediate to advanced
640 pages
16h 56m
English
Go programs are inherently easy to parse. In fact, the Go library provides built-in packages that can parse Go programs into abstract syntax trees (ASTs), which can be traversed, modified, and transformed back into Go code. Let's go through a simple example to show you how easy it is to work with these packages.
First, we need a helper function to convert a Go program into an AST representation. The following parse function does exactly that:
import ( "fmt" "go/ast" "go/parser" "go/token" ) // parse a Go program into an AST representation. func parse(program string) (*token.FileSet, *ast.File, error) { fs := token.NewFileSet() tree, err := parser.ParseFile(fs, "example.go", program, 0)