How to Print Go Structs


Sometimes for debugging or even testing purposes, you may need to log variables as Go structs directly.

After some errands, I fell on go-spew and pretty that I used quite extensively.

But today I can say I found the Holy Graal, litter:

package main

import "github.com/sanity-io/litter"

type Person struct {
	Name   string
	Age    int
	Parent *Person
}

func main() {
	litter.Dump(Person{
	Name:   "Bob",
	Age:    20,
	Parent: &Person{
			Name: "Jane",
			Age:  50,
		},
	})
}

will output

Person{
	Name: "Bob",
	Age: 20,
	Parent: &Person{
		Name: "Jane",
		Age: 50,
	},
}

It supports slices, pointers, and circular types.

Good Hacking

sources: