Skip to content
Go library implementing expanded type-to-string conversion.
Go Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
render
.travis.yml
LICENSE
PRESUBMIT.py
README.md
WATCHLISTS
pre-commit-go.yml

README.md

go-render: A verbose recursive Go type-to-string conversion library.

GoDoc Build Status

This is not an official Google product.

Overview

The render package implements a more verbose form of the standard Go string formatter, fmt.Sprintf("%#v", value), adding:

  • Pointer recursion. Normally, Go stops at the first pointer and prints its address. The render package will recurse and continue to render pointer values.
  • Recursion loop detection. Recursion is nice, but if a recursion path detects a loop, render will note this and move on.
  • Custom type name rendering.
  • Deterministic key sorting for string- and int-keyed maps.
  • Testing!

Call render.Render and pass it an interface{}.

For example:

type customType int
type testStruct struct {
        S string
        V *map[string]int
        I interface{}
}

a := testStruct{
        S: "hello",
        V: &map[string]int{"foo": 0, "bar": 1},
        I: customType(42),
}

fmt.Println("Render test:")
fmt.Printf("fmt.Printf:    %#v\n", a)))
fmt.Printf("render.Render: %s\n", Render(a))

Yields:

fmt.Printf:    render.testStruct{S:"hello", V:(*map[string]int)(0x600dd065), I:42}
render.Render: render.testStruct{S:"hello", V:(*map[string]int){"bar":1, "foo":0}, I:render.customType(42)}

This is not intended to be a high-performance library, but it's not terrible either.

Contributing

  • Sign the Google CLA.
  • Make sure your user.email and user.name are configured in git config.
  • Install the pcg git hook: go get -u github.com/maruel/pre-commit-go/cmd/... && pcg

Run the following to setup the code review tool and create your first review:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $HOME/src/depot_tools
export PATH="$PATH:$HOME/src/depot_tools"
cd $GOROOT/github.com/luci/go-render
git checkout -b work origin/master

# hack hack

git commit -a -m "This is awesome\nR=joe@example.com"
# This will ask for your Google Account credentials.
git cl upload -s
# Wait for LGTM over email.
# Check the commit queue box in codereview website.
# Wait for the change to be tested and landed automatically.

Use git cl help and git cl help <cmd> for more details.

You can’t perform that action at this time.