fields.go 598 bytes
package log
// Fields is a linked list of (name, value) couple
type Fields struct {
	name     string
	value    interface{}
	previous *Fields
// With creates new Fields that include the given (name, value) couple.
func (f *Fields) With(name string, value interface{}) *Fields {
	return &Fields{name, value, f}
// ForEach applies the given function for each (name, value) couple, as long as it returns true.
func (f *Fields) ForEach(do func(string, interface{}) bool) {
	for i := f; i != nil && do(i.name, i.value); i = i.previous {
func (f *Fields) IsEmpty() bool {
	return f == nil