Создайте систему для динамической загрузки и выгрузки общих объектов в виде плагинов.

Я хочу узнать, как заставить основное приложение загружать расширения или плагины для улучшения функциональности указанного приложения. основываясь на моем знании других языков, я представил, как это будет выглядеть.

  1. во-первых, иметь интерфейс в приложении, из которого будут получены все подключаемые модули, загружаемые в приложение:
// some_package_in_the_main_app.go

type Plugin interface {

  // function is called when the app starts
  Enable()

  // function is called when the app stops
  Disable()
}
  1. затем нужно сделать плагин для добавления функциональности в приложение:
// some_plugin_package.go

func (*Plugin) Enable() {
}

func (*Plugin) Disable() {
}

Я хочу знать, как подключить все это в простой в управлении системе.


person Steve Coulter    schedule 05.08.2020    source источник
comment
Отвечает ли это на ваш вопрос? Загружать пакет динамически   -  person kozmo    schedule 05.08.2020
comment
В Go есть поддержка плагинов: golang.org/pkg/plugin.   -  person Burak Serdar    schedule 05.08.2020
comment
Обратите внимание, что плагины Go можно только загружать, но не выгружать, и в настоящее время они не поддерживаются в Windows (может измениться в будущем).   -  person icza    schedule 05.08.2020
comment
Этот вопрос нужно отредактировать, он слишком широкий. Все зависит от того, чего вы хотите добиться, каково содержание плагина. Я просто могу предложить «функция вызывается, когда приложение запускается/останавливается». Если вы хотите вызвать функцию, если приложение остановится, перехватив os.Exit, вы не сможете, и точка. Но если у приложения есть условия для остановки, вы можете использовать defer. Наоборот, вы можете использовать init в пакете main при запуске приложения.   -  person Fahim Bagar    schedule 05.08.2020
comment
Новичок в Go и прямое погружение в одну из самых сложных вещей может быть не лучшей идеей.   -  person Volker    schedule 05.08.2020