Skip to content

garslo/gogen

Repository files navigation

gogen

A simplification of Go's go/ast package that allows for some interesting code generation. Currently very rough.

Examples

Hello World

package main

import (
	"os"
	. "github.com/garslo/gogen"
)

func main() {
	pkg := Package{Name: "main"}
	pkg.Declare(Import{"fmt"})
	pkg.Declare(Function{
		Name: "main",
		Body: []Statement{
			CallFunction{
				Func:   Dotted{Var{"fmt"}, "Println"},
				Params: []Expression{Var{`"Hello World!"`}},
			},
		},
	})
	pkg.WriteTo(os.Stdout)
}

Output:

package main

import "fmt"

func main() {
	fmt.Println("Hello World!")
}

More

See the examples directory for more examples and a build/run script.

$ ./run-example.sh for_loop.go
CODE:
package main

import "os"
import "fmt"

func main() {
	var i int
	for i = 0; i <= 10; i++ {
		fmt.Println(i)
	}
	os.Exit(i)
}
RUN RESULT:
0
1
2
3
4
5
6
7
8
9
10
exit status 11

About

Library for programmatic Go code generation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages