Sharifzoda
он в мюксе вызывается
Dmitry
он в мюксе вызывается
ты имеешь ввиду в http.ServeMux ?
Sharifzoda
mux *http.ServerMux
Dmitry
да
чет не нашел в этой структуре вызова метода Init
Sharifzoda
Dmitry
ну а этот метод Init где вызывается?
Dmitry
как из main-функции попасть в Init?
Dmitry
ты понимаешь что такое вызов функции?
Dmitry
это значит где-то должна быть строка server.Init()
Dmitry
найди её у себя в коде
Sharifzoda
возможно из-за этого
Sharifzoda
ща попробую
Sharifzoda
в любом случае спасибо, брат
Sharifzoda
Сработал сервак
Sharifzoda
найди её у себя в коде
ещё раз спасибо
Oleksandr
Всем привет. Можно както в defer изменить возвращаемое значение из функции. Тоесть я хочу отловить панике в функции и вернуть ошибку
Oleksandr
Oleksandr
Не получается(
kostyaBro
Не получается(
Можно но recover() не error возвращает
Oleksandr
Andrey
а ты раньше работал со строго типизированными языкамии?
Oleksandr
JS раньше бьіл, так что сори за глупьіе вопросьі
Andrey
тогда гугли в сторону приведение interface{} в конкретному типу
Vladislav
а нафига тебе этот реверанс?
Oleksandr
Поч рековер возвращает интерфейс?
Oleksandr
а нафига тебе этот реверанс?
Для познания все сути паник)
kostyaBro
а что?
Там любой тип может быть, в твоем случае наверное строка. Попробуй так err = fmt.Errorf(”%v", recover())
Andrey
Го написан на Го, так что всегда можешь тсходники посмотреть)
Oleksandr
В том, что рековер возвращает интерфейс нету смьісла. Почему он не возвращает ошибку, если должен возвращать ошибку?
Andrey
а почему он должен возвращать ошибку?
kostyaBro
Вот да
Oleksandr
а почему он должен возвращать ошибку?
Потому что паника должна преобразоватся в ошибку
Andrey
Потому что паника должна преобразоватся в ошибку
а ты знаешь что ошибка это строка?
Oleksandr
Andrey
Ошибка - структура error
для начала это интерфейс
kostyaBro
Потому что паника должна преобразоватся в ошибку
Ты можешь паникнуть любым типом и рекавер тоже
Andrey
??0o
я к тому, что на самом низком уровне это строка )
Oleksandr
Почему нельзя паниковать строкой?
Andrey
Почему нельзя паниковать строкой?
тебе же написали ЛЮБЫМ типом
kostyaBro
Я же говорю паника принимает any, соответственно recover его возвращает
kostyaBro
Ты можешь завести правило паниковать ошибкой.
Vladislav
kostyaBro
Тогда рекавер будет ошибкой
kostyaBro
Но тебе нужно сделать явное кастование к типу
kostyaBro
Тоесть recover().(type)
Andrey
считай что рекавери и паника это своеобразный канал, где один другому кидает "объект" паники
kostyaBro
Oleksandr
Почему єто не работает?
kostyaBro
Стектрейс ты запрашиваешь с помощью debug.Stack()
kostyaBro
Сейчас просто нашёл мидлварю сыою
Andrey
Стектрейса там ж нет?
при паники стек сам генерится. точнее после того как прога упала
Vladislav
согласен, тоже только нашел
kostyaBro
Почему єто не работает?
Сделай func foo() (err error)
Andrey
kostyaBro
kostyaBro
Мы получим значение и пойдем дальше
Andrey
Сделай func foo() (err error)
не учи такому стилю плз)
Oleksandr
не учи такому стилю плз)
А что плохого и почему мне вернулись какието ссьілки?
kostyaBro
Я ебался с этим в свое время. Кто-то сделал в fiber timeout middleware recover. И я не мог понять почему запрос зависает, а там паника была но из за _ = recover() в либе было чисто)
Andrey
А что плохого и почему мне вернулись какието ссьілки?
потому что println выводит "исходники" переменной
kostyaBro
не учи такому стилю плз)
Согласен. Но только так получится замутейтить ответ
Andrey
А что плохого и почему мне вернулись какието ссьілки?
а интерфейс это структура из двух поле где хранятся указатели, вот ты их и видишь
Oleksandr
Это объект, вызови . Error()
Ура, спасибо.🎉 Осталось понять как єто работает
kostyaBro
😁
Oleksandr
Это объект, вызови . Error()
В го есть обьектьі?
Andrey
В го есть обьектьі?
смотря что ты подразумеешь под ними
kostyaBro
Ты go tour прошел?