spluggy : плагины с компиляцией для GoОрганизация вашего кода в качестве плагинов имеет много преимуществ, GO обеспечивает отличную поддержку для них. Предостережение (помимо ада зависимости) состоит в том, что вы теряете прохладное, однораженное преимущество GO.
spluggy дает вам лучшее из обоих миров: статические плагины. Вы определяете свои плагины как подпакуки в том же пакете. Пока все они выставляют функцию с тем же именем, spluggy обнаружит их автоматически и сделает функцию доступной для внешних пакетов.
В примере функционирующее приложение, которое демонстрирует, как использовать spluggy , используя go generate . Интерфейс линии похвалы:
Usage: spluggy <flags> <package directory>
With flags:
-func string
The exposed function name
-out string
Output file name (default "plugins.go")
-pkg string
The base package
-v Enable verbose output
В настоящее время spluggy не может вывести зависимости типа структуры, определенные в map , например,
// spluggy cannot infer that "somepackage" shoud be imported
func Fn ( map [somepackage. SomeStructType ] int ) {
...
}Это будет адресовано в следующей версии.
spluggy - это работа ❤ от Codoma.tech.