Detect reader reads the first bytes looking for magic bytes. Then it returns an appropriate reader for that stream.
Windows, OS X & Linux:
go get github.com/gurre/detectreader
Simple usage:
// Some compressed byte stream
reader := bytes.NewReader(b)
// The returned reader is a decompressor
decompressedReader, err := Decompress(reader)