bolthelper.go
func (tx Tx) ForEachGob(folders [][]byte, f func(Bucket, bytesp.Slice, interface{}) error) error {
	return tx.ForEach(folders, func(b Bucket, k, bs bytesp.Slice) error {
		var v interface{}
		if err := gob.NewDecoder(&bs).Decode(&v); err != nil {
			return errorsp.WithStacksAndMessage(err, "decoding %d bytes value for key %q failed", len(bs), string(k))
		}
		return errorsp.WithStacks(f(b, k, v))
	})
}
func (tx Tx) ForEachGob(folders [][]byte, f func(Bucket, bytesp.Slice, interface{}) error) error {
	return tx.ForEach(folders, func(b Bucket, k, bs bytesp.Slice) error {
		var v interface{}
		if err := gob.NewDecoder(&bs).Decode(&v); err != nil {
			return errorsp.WithStacksAndMessage(err, "decoding %d bytes value for key %q failed", len(bs), string(k))
		}
		return errorsp.WithStacks(f(b, k, v))
	})
}
// ForEach iterates over all key values of a folder, decode non-nil values using gob.