A tiny go package which combines together fs.FS filesystems.
mergefs.FS looks through a slice of fs.FS filesytems in order to find a given file. It returns the first match, or os.ErrNotExist.
Related work
mergefs could be used to overlay multiple fs.FS filesystems on top of each other.
marshalfs for backing a fileystem with your objects.
Standard Library:
dirfs contains os.DirFS - this 'default' implementation is backed by an actual filesystem.
testfs contains a memory-map implementation and a testing tool. The standard library contains a few other fs.FS implementations (like 'zip')
embedfs provides access to files embedded in the running Go program.
An earlier work, afero is a filesystem abstraction for Go, which has been the standard for filesystem abstractions up until go1.15. It's read-write, and it's a mature project. The interfaces look very different (big with lots of methods), so it's not really compatible.
ReadDir reads from the directory, and produces a DirEntry array of different
directories.
It iterates through all different filesystems that exist in the mfs MergeFS
filesystem slice and it identifies overlapping directories that exist in different
filesystems