kv

package module
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2022 License: MIT Imports: 3 Imported by: 16

README

go-kv

This library provides a key-value field structure kv.Field{} that plays well with the "fmt" package. It gives an easy means of appending key-value fields to log entries, in a manner that also happens to look nice! (it's not far removed from using a map[string]interface{}).

The formatting for these key-value fields is handled by the "fmt" package by default. If you set the kvformat build tag then it will use a custom formatting library found under format/. You can see the benchmarks for both below.

benchmarks

TODO: benchmarks comparing these to using fmt.Sprintf("%q=%+v", ...) yourself.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Field

type Field struct {
	K string      // Field key
	V interface{} // Field value
	X bool        // Verbose flag
}

Field represents an individual key-value field.

func (Field) AppendFormat

func (f Field) AppendFormat(buf *format.Buffer)

AppendFormat will append formatted format of Field to 'buf'. See .String() for details.

func (Field) GoString

func (f Field) GoString() string

GoString performs .String() but with verbose always enabled.

func (Field) Key added in v1.1.0

func (f Field) Key() string

Key returns the formatted key string of this Field.

func (Field) String

func (f Field) String() string

String will return a string representation of this Field of the form `key=value` where `value` is formatted using fmt package's `%+v` directive. If the .X = true (verbose), then it uses '%#v'. Both key and value are escaped and quoted if necessary to fit on single line.

If the `kvformat` build tag is provided, the formatting will be performed by the `kv/format` package. In this case the value will be formatted using the `{:v}` directive, or `{:?}` if .X = true (verbose).

func (Field) Value added in v1.1.0

func (f Field) Value() string

Value returns the formatted value string of this Field.

type Fields

type Fields []Field

Fields is a typedef for a []Field slice to provide slightly more performant string formatting for multiples.

func (Fields) AppendFormat

func (f Fields) AppendFormat(buf *format.Buffer)

AppendFormat appends a string representation of receiving Field(s) to 'b'.

func (Fields) GoString

func (f Fields) GoString() string

GoString performs .String() but with type prefix.

func (*Fields) Set added in v1.1.0

func (f *Fields) Set(key string, value interface{})

Set will set an existing field with 'key' to 'value', or append new.

func (Fields) String

func (f Fields) String() string

String returns a string representation of receiving Field(s).

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL