如何克服Golang中每个程序包都包含可构建代码的要求?

I am building a web application in Go and as part of it I have several middelware functions defined. Right now they all live in "my/middleware" package. That namespace is becoming very cluttered by all the different functions I've defined so I decided to put them all in their own subdirectories, e.g. "my/middleware/gzip". When I do this I get the error:

no buildable Go source files my/middleware

I don't want all of these functions in the same namespace, but it seems my only option is to create a placeholder .go file in the my/middleware directory with an empty init function or something. That sounds terrible so I'd like suggestions on how to achieve my goal to group a similar class of packages when there isn't any shared/common code to live in the parent package.

You are actually taking the right decision by splitting the files into different subfolders. It is not different than what is done here https://golang.org/pkg/compress/ This allows for the clients of your framework to take only what they need. The idea is to avoid dependency bloating. Go is all about being lean. The error you receive is because you try to build a package that doesn't exist. Think of that folder as a logical grouping mechanism, you need to build the packages given by the child folders individually.