package archive import ( "archive/zip" "os" "fmt" ) type Archive struct { file *os.File } func Create(name string) (Archive, error) { var archive Archive file, err := os.Create(name) if err != nil { return archive, err } archive.setFile(file) return archive, nil } func (a *Archive) AddFile(path, content string) error { writer := zip.NewWriter(a.file) defer writer.Close() file, err := writer.Create(path) if err != nil { return err } fmt.Fprintf(file, content) return nil } func (a *Archive) Close() error { return a.file.Close() } func (a *Archive) setFile(file *os.File) { a.file = file }