func (f *zipFileHeads) doFilesZip(comment string) *bytes.Buffer {
	b := new(bytes.Buffer)
	z := zip.NewWriter(b)
	z.SetComment(comment)
	for _, file := range f.Files {
		fh := &zip.FileHeader{
			Name:     file.Name,
			Modified: file.Modified,
			Method:   file.Method,
		}
		zf, err := z.CreateHeader(fh)
		if err != nil {
			log.Fatal(err)
		}
		if _, err = zf.Write(file.Body); err != nil {
			log.Fatal(err)
		}
	}
	if err := z.Close(); err != nil {
		log.Fatal(err)
	}
	return b
}
doFilesZip : Zipping *zipFileHeads.
package utl
import (
	"archive/zip"
	"bytes"
	"encoding/json"
	"log"
	"time"
)
type zipFileHeads struct {
	Files []zipFileHead
}
type zipFileHead struct {
	Name     string
	Modified time.Time
	Method   uint16
	Body     []byte
}