func Stack(key string) zapcore.Field {
	return String(key, takeStacktrace())
}
Stack constructs a field that stores a stacktrace of the current goroutine
under provided key. Keep in mind that taking a stacktrace is eager and
expensive (relatively speaking); this function both makes an allocation and
takes about two microseconds.
package zap
import (
	"fmt"
	"math"
	"time"
	"go.uber.org/zap/zapcore"
)
func Skip() zapcore.Field {
	return zapcore.Field{Type: zapcore.SkipType}
}
func Binary(key string, val []byte) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.BinaryType, Interface: val}
}
func Bool(key string, val bool) zapcore.Field {
	var ival int64
	if val {
		ival = 1
	}
	return zapcore.Field{Key: key, Type: zapcore.BoolType, Integer: ival}
}
func ByteString(key string, val []byte) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.ByteStringType, Interface: val}
}
func Complex128(key string, val complex128) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Complex128Type, Interface: val}
}
func Complex64(key string, val complex64) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Complex64Type, Interface: val}
}
func Float64(key string, val float64) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Float64Type, Integer: int64(math.Float64bits(val))}
}
func Float32(key string, val float32) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Float32Type, Integer: int64(math.Float32bits(val))}
}
func Int(key string, val int) zapcore.Field {
	return Int64(key, int64(val))
}
func Int64(key string, val int64) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Int64Type, Integer: val}
}
func Int32(key string, val int32) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Int32Type, Integer: int64(val)}
}
func Int16(key string, val int16) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Int16Type, Integer: int64(val)}
}
func Int8(key string, val int8) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Int8Type, Integer: int64(val)}
}
func String(key string, val string) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.StringType, String: val}
}
func Uint(key string, val uint) zapcore.Field {
	return Uint64(key, uint64(val))
}
func Uint64(key string, val uint64) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Uint64Type, Integer: int64(val)}
}
func Uint32(key string, val uint32) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Uint32Type, Integer: int64(val)}
}
func Uint16(key string, val uint16) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Uint16Type, Integer: int64(val)}
}
func Uint8(key string, val uint8) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.Uint8Type, Integer: int64(val)}
}
func Uintptr(key string, val uintptr) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.UintptrType, Integer: int64(val)}
}
func Reflect(key string, val interface{}) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.ReflectType, Interface: val}
}
func Namespace(key string) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.NamespaceType}
}
func Stringer(key string, val fmt.Stringer) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.StringerType, Interface: val}
}
func Time(key string, val time.Time) zapcore.Field {
	return zapcore.Field{Key: key, Type: zapcore.TimeType, Integer: val.UnixNano(), Interface: val.Location()}
}