dodrator, Close нужно выносить в обработчик, который отвечает за graceful shutdown вашего сервиса.
Пул передается в другие пакеты с помощью DI, все верно.
Нет, этот код нужно использовать только при старте вашего приложения. Пул коннектов к базе создается один раз и потом используется все время работы приложения.
Sneiksus, если отдаленная сторона перекрывает, тут точно z-buffer. У меня нет времени по всему коду пройтись и все проверить. Возьмите какой-нибудь из рабочих примеров с z-buffer-ом и пляшите от него.
Владимир, второй пример это не деструктуризация, а костыль. Не стоит тащить в го паттерны из других языков. Будет больно и неудобно читать код другим людям.
Я не спорю, что деструктуризация это классная фича, но ее все же нет, к сожалению.
Кирилл Новак, под капотом интерфейс это структура, в которой есть указатель на данные и таблица виртуальных методов. Когда из интерфейса вызывается метод, он на рантайме ищется в этой таблице и к нему подкладываются данные.
Если еще туда добавлять двойной матчинг всех аргументов (как в случае с возвращаемым типом, если его матчить на интерфейс), это будет совсем медленно. Да и по философии го такие вещи принято делать явно, не скрывая за синтаксическим сахаром, чтобы быть ближе к железу.
P747, в Го нет наследования, есть только композиция (встраивание) и она работает несколько по-другому. Не советую пытаться нести паттерны других языков в Го. Лучше всего писать так, как среди гошников принято.
Считаю, что в приведенной статье показан антипаттерн (включая способ именования интерфейсов, в Го так не делают). Интерфейсы в Го следует использовать только для устранения связанности кода и ограниченно — для полиморфизма. Не пытайтесь через них костылить наследование, получится не очень и другим людям будет сложнее понимать код.
fasthttp это в целом довольно специфичная штука, нужно хорошо знать, что именно вы хотите ускорить и как, потому что иначе можно сделать даже медленнее, чем стандартный net/http
Пул передается в другие пакеты с помощью DI, все верно.