func (g *GlobPath) Match() []string {
	g.path = strings.ReplaceAll(g.path, "**/**", "**")
	g.path = strings.ReplaceAll(g.path, "**", "**/**")
	files, _ := doublestar.Glob(g.path)
	return files
}
Match returns all files matching the expression.
If it's a static path, returns path.
All returned path will have the host platform separator.
package globpath
import (
	"os"
	"path/filepath"
	"strings"
	"github.com/bmatcuk/doublestar/v3"
	"github.com/gobwas/glob"
)
type GlobPath struct {
	path         string
	hasMeta      bool
	HasSuperMeta bool
	rootGlob     string
	g            glob.Glob
}
func Compile(path string) (*GlobPath, error) {
	out := GlobPath{
		hasMeta:      hasMeta(path),
		HasSuperMeta: hasSuperMeta(path),
		path:         filepath.FromSlash(path),
	}
	if !out.hasMeta || !out.HasSuperMeta {
		return &out, nil
	}
	out.rootGlob = path[:strings.Index(path, "**")+1]
	var err error
	if out.g, err = glob.Compile(path, os.PathSeparator); err != nil {
		return nil, err
	}
	return &out, nil
}