222 / 66 / 33
Регистрация: 23.05.2014
Сообщений: 715
|
||||||||||||||||
1 | ||||||||||||||||
Маршрутизатор Echo для Golang и маршруты в отдельном файле23.08.2021, 21:25. Показов 2962. Ответов 10
Метки нет (Все метки)
Доброго вечера, господа профессионалы.
Использую маршрутизатор Echo https://echo.labstack.com/ и возник вопрос о выносе маршрутов за пределы main и функции main(). Для этого создал отдельный файл routes.go
Познания в GO - 2 недели чтива, так что попрошу: а) без оскорблений в мой адрес; б) помочь понять, потому как ни синтаксис, ни структура GO мне пока ещё не понятны. Спасибо.
0
|
23.08.2021, 21:25 | |
Ответы с готовыми решениями:
10
Вывести символы, используя только три ECHO. Echo '0', Echo '*', Echo '\n' (использовать цикл) Правильно ли для отделения каких то данных расположить в отдельном .cpp файле с заголовком .h Структура "Маршруты", найти маршруты начинающиеся или оканчивающиеся в заданном пункте Структура "Маршруты": найти маршруты начинающиеся или заканчивающиеся в заданном пункте |
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
23.08.2021, 21:35 | 2 |
0
|
222 / 66 / 33
Регистрация: 23.05.2014
Сообщений: 715
|
|
24.08.2021, 07:14 [ТС] | 3 |
ну, возможно не верно выразился. Для шаблонов html-страниц?
Мне необходимо переключаться между страничками, выполнять там какие-то действия (отображать данные для пользователя, забирать с формы и записывать в БД). Пока знаний хватило на такую реализацию. Вот и интересно правильно так или нет.
0
|
222 / 66 / 33
Регистрация: 23.05.2014
Сообщений: 715
|
|||||||||||
24.08.2021, 15:21 [ТС] | 4 | ||||||||||
Всё верно. Я не так выразился. Сбило слово "маршрутизатор". А работать надо было с шаблонами.
И я действительно всё совсем не правильно делал. Надо было так
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
24.08.2021, 18:18 | 5 |
Сообщение было отмечено drvolodko как решение
Решение
В Go не принято использовать такой стиль имён. Нужно AddUser.
По поводу шаблонов: стоит рассмотреть разделение UI (HTML/JS/CSS) и API (JSON): 1) сервер (бэкенд) на Go реализует только HTTP-JSON-API без всяких страниц. Часто это называют REST-API. 2) на JS/HTML/CSS пишется отдельно фронденд, который делает запросы к бэкенду и рендерит страницу. Есть много разных фреймворков: Angular, React, Vue и прочее. 3) NGINX выступает в качестве reverse-proxy для предоставления доступа к UI и API через один адрес, раздаёт статику (в том числе фронтенд из пункта 2). Может быть, с одной стороны, сложновато одновременно изучать Go и всю кухню веб-фронтендов, но обычно делают так, рендреить страницы на сервере сейчас не очень принято, разве что для совсем простых сайтов. Вместо JS/HTML/CSS можно использовать то, что знаешь, Java/C#/Qt/Delphi/итд. Тогда и NGINX не нужен, просто напрямую подключаешься к API-серверу на Go.
1
|
222 / 66 / 33
Регистрация: 23.05.2014
Сообщений: 715
|
|
24.08.2021, 19:28 [ТС] | 6 |
Привычка с Delphi.
Согласен, но я единственный программист в конторе... У нас не IT специализация, а я хочу полностью уйти именно в программирование. А Delphi для этого явно не достаточно. Да и то, что можно использовать Delphi вместо JS/HTML/CSS я знаю, но что-то десктоп уже поднадоел, хотя... Но думаю, чтобы всё таки норм изучить GO, хочу переписать все мной ранее написанное на Delphi. Ну и скорее всего все таки делать веб-фронтенд. Это уже как-то более современно..
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
24.08.2021, 20:14 | 7 |
drvolodko, а ты уверен, что пользователи оценят такое изменение? Помнится, Сашок-что-с-башкой переписал какую-то программулину для АТЦ с FoxPro на Java/Swing, и ему пришлось весь UI сделать по сути такой же, какой был на старом FoxPro под DOS, а не как нормальный десктопный гуй. С web такое не прокатит. Даже с переходом с Delphi на web. Да и с табелем было ни разу не гладко. Имеет смысл начать с выноса всех расчётных функций и хранение данных из Delphi в сервер на Go, а в Delphi-приложениях оставить просто запросы к серверу и отображение результатов, например. А потом уже гуй переписывать по чуть-чуть.
0
|
25.08.2021, 00:30 | 8 | |||||
Это не сложно - нужно лишь всегда проверять переменную указательного типа на != nil Возможно, когда-нибудь в Go завезут оператор безопасного доступа?, но пока только так... P.S. Проверять же db на nil вообще не нужно. В доке написано - просто пингуйте, чтобы проверить наличие подключения и проверяйте ошибку пинга. Если ошибка == nil, то db никогда не будет nil. P.P.S. По поводу ошибок, которые должна возвращать sql.Open. Если открыть ее исходный код, то становится понятно, что она вернет ошибку 1) если мы укажем несуществующее имя драйвера (например, "superpupermysql"), 2) либо если ошибку вернет сам драйвер, которому Open делегирует весь дальнейший процесс подключения. Так что если mysql драйвер не хочет возвращать ошибку на неверные параметры подключения, то ничего не поделаешь - так уж реализовано разработчиками. Поэтому делаем db.Ping.
2
|
-28 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
|
25.08.2021, 07:12 | 9 |
Выше по драйвер БД Вам уже отметили. "Все работает" - ровно до первого обращения к драйверу. После Open() стоит смотреть не столько ошибку, сколько пинговать соединение, что оно приключилось.
Далее, main(): 1. Переменная cfg объявлена, но ничего не содержит .. соответственно все, где она используется .. "работает условно", по умолчанию. 2. Не применимость Close() к nil указателю - это выше, а вот то, что сама Close() также возвращает СВОЮ(!) ошибку, и она остается не обработана - то Вам легко могут зачесть как "косячок" .. 3. как раз наоборот. Проверять корректность надо у ошибки, а Вы ее проигнорировали. Вот ежели она есть, то db никому не нужен (и чаще всего возврат результата окажется как раз nil!). У Вас ошибка по сути НЕ логируется тут. .. остальное? А остальное ИНАЧЕ, Вы все равно не напишете .. это же Го! Один язык для джунов и сеньоров с разрабами.. (а то вдруг сеньор коде ревью делать не умеет)
0
|
222 / 66 / 33
Регистрация: 23.05.2014
Сообщений: 715
|
||||||
25.08.2021, 08:44 [ТС] | 10 | |||||
Ну насчёт Сашка ты прав, но зачем мне накой же интерфейс делать? Возможно в чём-то и будет схоже, но я вно не полностью.
Хотя, возможно, ты и прав. Может пока фронт оставить на Delphi надо... Думаю над этим уже.. Garry Galler, про дб я специально выложил. Мало ли заметят и надают люлей. Спасибо за замечание. Как это?
0
|
-28 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
|
25.08.2021, 08:50 | 11 |
Сорри, с утра глаза не продрал ещё.
По конкретно этому оператору: у кого как, но у нас "не комильфо" писать составной оператор Го. Не очевиден, := слева часто имеет полуопределенный набор переменных, перекрытие которых также не всегда очевидно. Одна из причин почему не заметил. Кстати.
0
|
25.08.2021, 08:50 | |
25.08.2021, 08:50 | |
Помогаю со студенческими работами здесь
11
Функция в отдельном файле Скрипт в отдельном файле Переменные в отдельном файле Скрипт в отдельном файле Классы в отдельном файле Функции в отдельном файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |