Зачем вызывать приватную функцию из публичной, а не реализовывать код в публичной? - PullRequest
0 голосов
/ 28 сентября 2018

Я вижу много таких кодов в golang src:

func Open(path string) (*Plugin, error) {
    return open(path)
}

func open() {
  // etc
}

Закрытая функция была вызвана из публичной.Почему бы просто:

func Open(path string) (*Plugin, error) {
    // code of open here
}

ref: https://golang.org/src/plugin/plugin.go?s=1065:1104#L21

Я понимаю, что иногда это имеет смысл, особенно если есть больше функций, использующих open.Но это не тот случай.

Это какой-то способ Голанга организовать вещи?

1 Ответ

0 голосов
/ 28 сентября 2018

В данном случае это происходит потому, что фактическая реализация зависит от ОС.

Реализация плагина plugin_dlopen.go используется только для OSX и Linux, а альтернатива plugin_stubs.go - для всего остального (который просто содержит фиктивные функции, поскольку для других систем еще нет реализации.)

Это позволяет вам хранить зависимый от ОС код в одном файле, используя build tags , сохраняя общий код открытымAPI и документация для публичного API в одном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...