func (b *byteBuffer) PutFloat64(value float64) {
	binary.LittleEndian.PutUint64(b.alloc(8), math.Float64bits(value))
}
PutFloat64 adds the value as a float64.
package fieldio
import (
	"encoding/binary"
	"math"
)
type byteBuffer []byte
func (b *byteBuffer) Uint16() uint16 {
	value := binary.LittleEndian.Uint16(*b)
	*b = (*b)[2:]
	return value
}
func (b *byteBuffer) Float64() float64 {
	value := binary.LittleEndian.Uint64(*b)
	*b = (*b)[8:]
	return math.Float64frombits(value)
}
func (b *byteBuffer) Uint8() uint8 {
	value := (*b)[0]
	*b = (*b)[1:]
	return value
}
func (b *byteBuffer) Varint64() int64 {
	value, n := binary.Varint(*b)
	if n <= 0 {
		panic("byteBuffer.Varint64: underflow")
	}
	*b = (*b)[n:]
	return value
}
func (b *byteBuffer) Uvarint32() uint32 {
	value, n := binary.Uvarint(*b)
	if n <= 0 || value > math.MaxUint32 {
		panic("byteBuffer.Uvarint32")
	}
	*b = (*b)[n:]
	return uint32(value)
}
func (b *byteBuffer) Uvarint64() uint64 {
	value, n := binary.Uvarint(*b)
	if n <= 0 {
		panic("byteBuffer.Uvarint64: underflow")
	}
	*b = (*b)[n:]
	return value
}
func (b *byteBuffer) RawBytes(n int) []byte {
	value := (*b)[:n]
	*b = (*b)[n:]
	return value
}
func (b *byteBuffer) alloc(bytes int) []byte {
	blen := len(*b)
	newLen := blen + bytes
	if cap(*b) >= newLen {
		(*b) = (*b)[:newLen]
		return (*b)[blen:]
	}
	newCap := (newLen/16 + 1) * 16
	if newCap < cap(*b)*2 {
		newCap = cap(*b) * 2
	}
	newBuf := make([]byte, newLen, newCap)
	copy(newBuf, *b)
	*b = newBuf
	return (*b)[blen:]
}
func (b *byteBuffer) PutUint8(value uint8) {
	(b.alloc(1))[0] = value
}
func (b *byteBuffer) PutBytes(data []byte) {
	copy(b.alloc(len(data)), data)
}
func (b *byteBuffer) PutString(data string) {
	copy(b.alloc(len(data)), data)
}
func (b *byteBuffer) PutUint16(value uint16) {
	binary.LittleEndian.PutUint16(b.alloc(2), value)
}