func (u *Unzipper) Unzip() (FileSystem, error) {
	var err error
	if u.isUnzipped {
		return nil, fmt.Errorf("already unzipped")
	}
	zipReader, err := zip.NewReader(u.reader, u.size)
	if err != nil {
		return nil, err
	}
	zfs := NewFileSystem()
	var readCloser io.ReadCloser
	for _, file := range zipReader.File {
		zgokFile := NewZgokFile()
		path := file.FileHeader.Name
		zgokFile.SetPath(path)
		fileInfo := file.FileHeader.FileInfo()
		zgokFile.SetFileInfo(fileInfo)
		readCloser, err = file.Open()
		if err != nil {
			break
		}
		buf := new(bytes.Buffer)
		_, err = io.Copy(buf, readCloser)
		if err != nil {
			break
		}
		zgokFile.SetBytes(buf.Bytes())
		readCloser.Close()
		zfs.AddFile(zgokFile)
	}
	if err != nil {
		return nil, err
	}
	u.isUnzipped = true
	return zfs, nil
}
Unzip all the files in zip.
package zgok
import (
	"archive/zip"
	"bytes"
	"fmt"
	"io"
)
type Unzipper struct {
	isUnzipped bool           
	reader     *bytes.Reader  
	size       int64          
}
func NewUnzipper(zipBytes *[]byte) *Unzipper {
	u := &Unzipper{
		isUnzipped: false,
		reader:     bytes.NewReader(*zipBytes),
		size:       int64(len(*zipBytes)),
	}
	return u
}