General Golang Code Generator


Build Status Go dev License matrix


gg is a General Golang Code Generator: A Good Game to play with Golang.

package main

import (

	. ""

func main() {
	f := NewGroup()
		String(`fmt.Println("%s")`, "Hello, World!"),

Output (after go fmt)

package main

import "fmt"

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


gg is a general golang code generator that designed for resolving problems exists in the following tools:

  • text/template: Additional syntax, Steep learning curve, Complex logic is difficult to maintain
  • dave/jennifer: Overly abstract APIs, user need to take care about (), , everywhere.
  • kubernetes-sigs/kubebuilder: Parse data from struct tags/comments, not a general code generator.

In short, gg will provide near-native golang syntax and helpful API so play a good game with Golang. With gg, we can generate golang code more easily and understandable.


Package Name

f := Group()
// package main


f := Group()
	AddAlias("x", "testing")
// import (
//      "context"
//      . "math"
//      _ "time"
//      x "testing"
// )


f := Group()
    WithReceiver("v", "*World").
    AddParameter("content", "string").
    AddParameter("times", "int").
    AddResult("v", "string").
    AddBody(gg.String(`return fmt.Sprintf("say %s in %d times", content, times)`))
// func (v *World) hello(content string, times int) (v string) {
//  return fmt.Sprintf("say %s in %d times", content, times)


f := Group()
    AddField("x", "int64").
    AddField("y", "string")
// type World struct {
//    x int64
//    y string


  • gg is inspired by dave/jennifer, I borrowed most ideas and some code from it. Nice work!
You might also like...
Autoname - Friendly names generator with golang

autoname Friendly names generator inspired by moby's work. import "

Go-sudoku - Sudoku generator and solver implementation in GoLang

go-sudoku An implementation of Sudoku generators and solvers in GoLang. Usage He

Random fake data and struct generator for Go.

Faker Random fake data and struct generator for Go. More than 100 generator functions Struct generator Unique data generator Builtin types support Eas

Random fake data generator written in go
Random fake data generator written in go

Gofakeit Random data generator written in go Features 160+ Functions!!! Concurrent Global Rand Struct Generator Custom Functions Http Server Command L

A distributed unique ID generator of using Sonyflake and encoded by Base58

Indigo About A distributed unique ID generator of using Sonyflake and encoded by Base58. ID max length is 11 characters by unsigned int64 max value. A

Unit tests generator for Go programming language
Unit tests generator for Go programming language

GoUnit GoUnit is a commandline tool that generates tests stubs based on source function or method signature. There are plugins for Vim Emacs Atom Subl

GObject-introspection based bindings generator

WARNING! This project is no longer maintained. Probably doesn't even compile. GObject-introspection based bindings generator for Go. Work in progress

Typo/error resilient, human-readable token generator

toktok A human-friendly token generator Creates tokens which avoid characters that can be easily misinterpreted, like '1' and 'I' or '8' and 'B', as w

Fast and secure initramfs generator
Fast and secure initramfs generator

Booster - fast and secure initramfs generator Initramfs is a specially crafted small root filesystem that mounted at the early stages of Linux OS boot

  • 不支持导入包的别名吗


    您好呀,我遇到了一个麻烦,希望帮我解答疑惑。 我使用如下语句为包设置一个别名时,得到一个导入错误的提示。 导入语句:

    f.NewImport().AddPath("myResponse \"http_server/response\"")

    错误信息: panic: 8:8: invalid import path: "myResponse \"http_server/response\""


    opened by kangour 3
  • v0.3.0(Nov 4, 2021)

  • v0.2.0(Sep 15, 2021)

    v0.2.0 - 2021-09-15


    • feat: Add group.AddString support
    • feat: Implement type and type alias support


    • function without AddBody will not generate empty body anymore.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Sep 8, 2021)

    v0.1.0 - 2021-09-08


    • feat: Add interface support (#4)
    • feat: Implement AppendFile
    • feat: Field accept both string and Node as input
    • feat: Add typed field support
    • feat: Export logic statement for group
    • feat: Add function call support
    • feat: Allow all body accept interface instead
    • feat: Add defer and function call support
    • Add var decl support
    • feat: Add test case for struct
    • API Redesign


    • fix: Struct should not have NamedLineComment
    • fix: struct Field should not return nil
    • fix: Insert a new line before closing struct
    • fix: Insert new line after switch case


    • Change return to accept input instead of function call
    • refactor: Make comment as float just like go ast (#6)
    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Sep 3, 2021)

  • v0.0.1(Sep 3, 2021)

An infrastructure engineer.
A general-purpose Cadence contract for trading NFTs on Flow

NFT Storefront The NFT storefront is a general-purpose Cadence contract for trading NFTs on Flow. NFTStorefront uses modern Cadence run-time type faci

Flow 98 Dec 24, 2022
XSD (XML Schema Definition) parser and Go/C/Java/Rust/TypeScript code generator

xgen Introduction xgen is a library written in pure Go providing a set of functions that allow you to parse XSD (XML schema definition) files. This li

null 211 Jan 1, 2023
Jennifer is a code generator for Go

Jennifer Jennifer is a code generator for Go. package main import ( "fmt" . "" ) func main() { f := NewFile("m

Dave Brophy 2.7k Dec 25, 2022
Default godoc generator - make your first steps towards better code documentation

godoc-generate Overview godoc-generate is a simple command line tool that generates default godoc comments on all exported types, functions, consts an

Dimitar Petrov 19 Sep 14, 2022
Protocol Buffers to HTTP client code generator/converter

Proto2http Proto2http provides a code generation tool to convert your protocol buffers (.proto) files into invokable HTTP request. Usage proto2http -p

Kodiiing 6 Oct 23, 2022
The High Code Framework (low-code for devs)

hof - the high code framework The hof tool tries to remove redundent development activities by using high level designs, code generation, and diff3 wh

_Hofstadter 343 Dec 24, 2022
🎄 My code for the Advent of Code of year 2021 in Go.

Advent of Code 2021 This repository contains all code that I wrote for the Advent of Code 2021. This year I chose to try and learn Go. Enjoy! Built wi

Nick van Ravenzwaaij 0 Dec 9, 2021
:guardsman: A teeny tiny and somewhat opinionated generator for your next golang project

A Yeoman Golang Generator We are very sorry Gophers, but other names for the generator where taken, so we choose go-lang. But we have gocreate as an a

Axel Springer SE 25 Sep 27, 2022
RinkWorks fantasy name generator in golang

RinkWorks fantasy name generator in golang

Alexei Shevchenko 15 Dec 25, 2022
Go Param Generator for golang

Go Param Generator Overview Generates struct's for you. No need to write it by hands Adds Getters and Setters Adds Constructor Easy to use Usage gopar

HaxiDenti 0 Dec 13, 2021