Size: a a a

2020 June 22

AK

Artem Krapivin in Go-go!
посмотрите чужие проекты на гитхабе?..
у вас же не какая-то специфическая задача, кажется
и код на гоу читается довольно хорошо
источник

EK

Eugene Koshevoy in Go-go!
Юрий Вельмесов
Я и не собираюсь этого делать.

Вот я сюда и обратился чтобы понять как это делается в го.

Есть конкретная задача:
У нас есть список роутов в конфиге, мы пробегаемся по ним и ищем совпадения и если есть совпадение вызываем нужный обработчик с передачей ему рекуест параметров.

Вопрос как это делается в го? Или как это архитектурно по другому делается?
источник

ЮВ

Юрий Вельмесов... in Go-go!
Владимир Столяров
а зачем роутинг вытаскивать в конфиг, обычно это делается прямо в коде и все
как раз таки во всех современных фреймворках роуты держатся в конфигах в разных ЯП, и только в Го это слышу от Вас...
источник

AS

Alexander Shavelev in Go-go!
Юрий Вельмесов
как раз таки во всех современных фреймворках роуты держатся в конфигах в разных ЯП, и только в Го это слышу от Вас...
далеко не только в го
источник

ВС

Владимир Столяров... in Go-go!
и какой в этом смысл? обычно в конфиг выносится то, что предполагается относительно часто менять без пересборки приложения
источник

s

stixlink in Go-go!
Юрий Вельмесов
как раз таки во всех современных фреймворках роуты держатся в конфигах в разных ЯП, и только в Го это слышу от Вас...
обычно в конфигах, когда вокруг много магии и все реализует фреймоврк
источник

W

Wingman in Go-go!
Юрий Вельмесов
как раз таки во всех современных фреймворках роуты держатся в конфигах в разных ЯП, и только в Го это слышу от Вас...
у тебя просто когнитивное искажение
какой-нибудь config.php — это тоже кусок кода)
источник

s

stixlink in Go-go!
но это не про го
источник

S

Sergey in Go-go!
В фреймворках в этом может быть смысл. Но в го они не пользуются спросом
источник

ЮВ

Юрий Вельмесов... in Go-go!
Владимир Гришин
в го мы берем горилла мукс или джин и работаем
знаете, есть у меня задача написать самому, почему объяснять долго...
если в кратце, то так как минимум я лучше сам язык узнаю, а не всякие сторонние пакеты под него и фреймворки
источник

ВГ

Владимир Гришин... in Go-go!
Юрий Вельмесов
знаете, есть у меня задача написать самому, почему объяснять долго...
если в кратце, то так как минимум я лучше сам язык узнаю, а не всякие сторонние пакеты под него и фреймворки
ну тогда смотрите код и делайте сами
источник

AK

Artem Krapivin in Go-go!
Юрий Вельмесов
знаете, есть у меня задача написать самому, почему объяснять долго...
если в кратце, то так как минимум я лучше сам язык узнаю, а не всякие сторонние пакеты под него и фреймворки
почему вы отказываетесь просто посмотреть чужие проекты?
источник

s

stixlink in Go-go!
Юрий Вельмесов
знаете, есть у меня задача написать самому, почему объяснять долго...
если в кратце, то так как минимум я лучше сам язык узнаю, а не всякие сторонние пакеты под него и фреймворки
эти пакеты просто роутинг, нет смысла его прееписывать. чтоб узнать как работает и какой подход, глянь исходники
источник

s

stixlink in Go-go!
хотя можешь пописать и с пакетом net
источник

ЮВ

Юрий Вельмесов... in Go-go!
Artem Krapivin
посмотрите чужие проекты на гитхабе?..
у вас же не какая-то специфическая задача, кажется
и код на гоу читается довольно хорошо
в том то и дело, что я понимаю что это распространенная задача, и поэтому на том же js и php я делал это за пару мин.
тут мне просто не хватает знаний.
Это не в укор го, что так сложно, я и так понимаю что это строго типизированный низкоуровневый язык и что здесь не так как в пыхе, я еще перед началом изучения понимал на что иду. Но чем больше я с ним работаю тем сложнее меня вернуть на пыху, незнаю все больше и и больше нравиться.

Есть вещи которые я наоборот тут делаю гораздо быстрее и плане кода аккуратнее.
источник

DK

Daniil Kuznetsov in Go-go!
Это не распространенная задача. Это явный антипаттерн
источник

ЮВ

Юрий Вельмесов... in Go-go!
но тут же опять жестко заданы хэнлеры

func main() {
 router := fasthttprouter.New()
 router.GET("/", Index)
 router.GET("/hello/:name", Hello)

 log.Fatal(fasthttp.ListenAndServe(":8080", router.Handler))
}

а как их в зависимости от каких то параметров вызывать?
источник

AS

Alexander Shavelev in Go-go!
Юрий Вельмесов
но тут же опять жестко заданы хэнлеры

func main() {
 router := fasthttprouter.New()
 router.GET("/", Index)
 router.GET("/hello/:name", Hello)

 log.Fatal(fasthttp.ListenAndServe(":8080", router.Handler))
}

а как их в зависимости от каких то параметров вызывать?
1) каких еще параметров
2) вы часто в пыхе меняете хендлер для роута просто так через конфиг?
источник

ЮВ

Юрий Вельмесов... in Go-go!
Sergey
В фреймворках в этом может быть смысл. Но в го они не пользуются спросом
это как раз такие одна из причин по которой я не стал подключать вайперы всякие на работу с конфигами и написал свой в пару десятков строк кода, именно поэтому я не хотел подрубать всякие пакеты горилы и чи.
я стал писать свой роутер. И я его уже правктически написал и архитектуру пакетов продумал и проекта в целом, но вот затык именно с динамическим вызовом этих самых хэндлеров.

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

EK

Eugene Koshevoy in Go-go!
Юрий Вельмесов
но тут же опять жестко заданы хэнлеры

func main() {
 router := fasthttprouter.New()
 router.GET("/", Index)
 router.GET("/hello/:name", Hello)

 log.Fatal(fasthttp.ListenAndServe(":8080", router.Handler))
}

а как их в зависимости от каких то параметров вызывать?
Даже в пыхе я не видел, чтобы кто-то таким занимался(динамический вызов хенделера, который зависит от параметров)
источник