kv

package module
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2023 License: MIT Imports: 6 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

func AppendQuote added in v1.6.0

func AppendQuote(buf *byteutil.Buffer, str string)

AppendQuote will append (and escape/quote where necessary) a formatted field string.

Types

type Field

type Field struct {
	K string      // Field key
	V interface{} // Field value
}

Field represents an individual key-value field.

func (Field) AppendFormat

func (f Field) AppendFormat(buf *byteutil.Buffer, vbose bool)

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(vbose bool) 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 *byteutil.Buffer, vbose bool)

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

func (Fields) Get added in v1.3.0

func (f Fields) Get(key string) (*Field, bool)

Get will return the field with given 'key'.

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