#go #import #switch-statement
#Вперед #импорт #switch-оператор
Вопрос:
Рассмотрим следующее
import ( "library_a"
"library_b"
...
"library_z"
Я хочу иметь возможность выбрать правильную библиотеку на основе буквы.
Итак, если у меня есть z в качестве входных данных, он выберет library_z.
Каков способ сделать это, не требуя массивного оператора switch?
Комментарии:
1. go не компилирует неиспользуемые библиотеки, поэтому вы не можете импортировать библиотеки во время выполнения, они либо импортируются и компилируются, либо нет.
2. неважно, я понимаю, что вы говорите. итак, нет никакого способа обойти оператор switch, потому что вы должны явно ссылаться на каждый из них, иначе они не будут скомпилированы?
3. Речь идет не о библиотеках, а о функциях / типах, которые они предоставляют. В какой-то момент вам нужно создать структуру, содержащую все параметры, которые вы хотите выбрать во время выполнения. Это может быть либо большой оператор switch, либо карта, содержащая указатели на все, что вы хотите использовать (также доступны указатели на функции в Go).
Ответ №1:
Если вы хотите использовать разные библиотеки, вам придется импортировать их все и фактически использовать их в своем коде.
Из документов:
Для пакета недопустимо импортировать себя, прямо или косвенно, или напрямую импортировать пакет без ссылки на какой-либо из его экспортированных идентификаторов.
Вам придется использовать переключатель, если вы хотите использовать разные реализации пакетов!