Voici comment j'utilise le gzip writer.
var b bytes.Buffer
gz := gzip.NewWriter(&b)
if _, err := gz.Write([]byte(data)); err != nil {
panic(err)
}
/*
if err := gz.Flush(); err != nil {
panic(err)
}
*/
if err := gz.Close(); err != nil {
panic(err)
}
lien du playground https://play.golang.org/p/oafHItGOlDN
Clair, Flush + Close
et juste Close
produisent des résultats différents.
Docs pour le package compress/gzip
indique:
func (z *Writer) Close() error
Close ferme le Writer en vidant toutes les données non écrites dans io.Writer sous-jacent et en écrivant le pied de page GZIP. Il ne ferme pas le io.Writer sous-jacent.
À quoi sert ce "flushing" dont parle ce doc? Pourquoi avez-vous besoin de la fonction Flush
si Close
suffit? Pourquoi Close
n'appelle-t-il pas Flush
?