Categorygithub.com/alecthomas/repr
modulepackage
0.4.0
Repository: https://github.com/alecthomas/repr.git
Documentation: pkg.go.dev

# README

Python's repr() for Go CircleCI

This package attempts to represent Go values in a form that can be used almost directly in Go source code.

Unfortunately, some values (such as pointers to basic types) can not be represented directly in Go. These values will be represented as &<value>. eg. &23

Example

type test struct {
  S string
  I int
  A []int
}

func main() {
  repr.Print(&test{
    S: "String",
    I: 123,
    A: []int{1, 2, 3},
  })
}

Outputs

&main.test{S: "String", I: 123, A: []int{1, 2, 3}}

Why repr and not pp?

pp is designed for printing coloured output to consoles, with (seemingly?) no way to disable this. If you don't want coloured output (eg. for use in diffs, logs, etc.) repr is for you.

Why repr and not go-spew?

Repr deliberately contains much less metadata about values. It is designed to (generally) be copyable directly into source code.

Compare go-spew:

(parser.expression) (len=1 cap=1) {
 (parser.alternative) (len=1 cap=1) {
  ([]interface {}) (len=1 cap=1) {
   (*parser.repitition)(0xc82000b220)({
    expression: (parser.expression) (len=2 cap=2) {
     (parser.alternative) (len=1 cap=1) {
      ([]interface {}) (len=1 cap=1) {
       (parser.str) (len=1) "a"
      }
     },
     (parser.alternative) (len=1 cap=1) {
      ([]interface {}) (len=1 cap=1) {
       (*parser.self)(0x593ef0)({
       })
      }
     }
    }
   })
  }
 }
}

To repr:

parser.expression{
  parser.alternative{
    []interface {}{
      &parser.repitition{
        expression: parser.expression{
          parser.alternative{
            []interface {}{
              parser.str("a"),
            },
          },
          parser.alternative{
            []interface {}{
              &parser.self{              },
            },
          },
        },
      },
    },
  },
}

# Functions

AlwaysIncludeType always includes explicit type information for each item.
ExplicitTypes adds explicit typing to slice and map struct values that would normally be inferred by Go.
Hide excludes fields of the given type from representation.
IgnoreGoStringer disables use of the .GoString() method.
IgnorePrivate disables private field members from output.
Indent output by this much.
New creates a new Printer on w with the given Options.
NoIndent disables indenting.
OmitEmpty sets whether empty field members should be omitted from output.
Print writes a representation of v to os.Stdout, separated by spaces.
Println prints v to os.Stdout, one per line.
ScalarLiterals forces the use of literals for scalars, rather than a string representation if available.
String returns a string representing v.

# Variables

Default prints to os.Stdout with two space indentation.

# Structs

Printer represents structs in a printable manner.

# Type aliases

An Option modifies the default behaviour of a Printer.