Не ну это
пон, кринге
Eugene
флекса не трожь
Eugene
😡😡😡
Не ну это
А уже все, теперь неделю трогать не будет
Martiz
Какие вопросы задают по телефону на стажерскую позицию в озон?
kostyaBro
Опыт спрашивают наверное. И что ты сам хочешь.
kostyaBro
Мб краткий скрининг. Тоесть пара вопросов по языку и бд
NU
Есть тут кто больше Илюхи шарит?
Не ну это
Все
Не ну это
🌚🌚🌚
Emin Zalaev
Продиктуйте запрос с джоином
Grigory
Vladislav
Есть тут кто больше Илюхи шарит?
нет, на самом деле, он главный
Emin Zalaev
😂😂😂😂😂
Тимофей
Можно ли по го найти удалённую стажировку?
Тимофей
А то в городе вообще ни одной вакансии нет
Илья
это дерево?
Rostislav
да
Тимофей
Wildberries?
Тимофей
Epam
А где они вакансии размещают?
NU
https://training.epam.kz/#!/Home?lang=ru&City=43,44,203
NU
Пощупай страницу
Тимофей
Screenshot (4 авг. 2022 г. 20:37:22)
Тимофей
Нет у них
Юра (Юрий Александрович)
https://github.com/TheAlgorithms/Go
Да мы уже полдня друг другу про trie рассказываем
Segmentation
Всем привет! Я новенький в go, прошу помочь. От зависимого сервиса ко мне в приложение приходит json с динамическим типом: {"k": "v1"} либо: {"k": ["v1", "v2"]} Я хочу на уровне приложения всегда работать с массивом, даже если в качестве значения пришла одна строка. Можно ли по хитрому анмаршелить json, чтобы сразу значение попадало в структуру в виде массива строк?
🅞leksiy
И нужное поле в структуре делаешь этого типа
🅞leksiy
https://gist.github.com/ik5/a4521a4166302efecc3d3f8ea8080912
Segmentation
Segmentation
Получилось, спасибо
Запустил под дебагом и увидел, что перебирая элементы массива и определяя их тип, он определяется как reflect.Interface{}, почему так?
Bogdan
Вечер добрый, господа. Пишу на gin/gonic upload-download image сервис и встретился с проблемой, что не отрисовываются img. Могу кинуть ссылку на репу, не могли бы подсказать в чем проблема? router.Static не помогает, в обычном http картинка есть, а при запуске сервера - нет, хотя пасник лежит верный, судя по консоли
🅞leksiy
Запустил под дебагом и увидел, что перебирая элементы массива и определяя их тип, он определяется как reflect.Interface{}, почему так?
В данной реализации идет анмаршалинг в интерфейс, затем рефлектом определение типа. Это не единственная реализация, можно сделать и без рефлекта, просто пример
🅞leksiy
А как лучше? Посоветвуйте альтернативные варианты, что почитать?
Можно ассертом проверять, можно смаршалить в []string и при ошибке в string попробовать
kostyaBro
Делаешь тип поля json.RawBinary. Потом у него проверяешь первый байт и узнаёшь массив это либо строка. Далее парсишь как массив или строку.
kostyaBro
?
🅞leksiy
[{“aaa”:123},…]
🅞leksiy
Нужно и второй байт проверять, а лучше все 😂
kostyaBro
Эмм там либо строка либо массив строк, если объект, шлем нахер
kostyaBro
Ну то есть кидаем ошибку маршалинга
🅞leksiy
Эмм там либо строка либо массив строк, если объект, шлем нахер
Ну если отправитель тип не гарантирует, то может прийти что угодно, по одному байту проверять бессмысленно, проще в интерфейс и ассерт
kostyaBro
Много ассертов надо, на каждый тип вообще, если отправитель макака и сооовсем ничего не гарантирует.
🅞leksiy
Ну []string и string
kostyaBro
Я думаю там просто прикол реализации что если строка одна то в массив не оборачивается. Пахнет jsom
kostyaBro
Ну []string и string
Ну и проверь первый байт, достаточно [ Массив " Строка
kostyaBro
Зачем долгие рефлекты,
🅞leksiy
Зачем рефлект при ассерте?
kostyaBro
О каком ассерте речь тогда, не допонял
🅞leksiy
val, ok := result.(type)
kostyaBro
Просто выше про рефлект было, потерял нить
kostyaBro
Нуу у тебя массив байт, какой тип ты ожидаешь
kostyaBro
Надо ж размаршалить
🅞leksiy
Маршалишь в interface{}, затем проверяешь тип, повторно ниче маршалить не нужно
kostyaBro
Интересно. Я попробую.
🅞leksiy
Неделю назад примерно разбирали подобный случай
kostyaBro
Понял, интересное решение.
🅞leksiy
В любом случае маршалинг в массив на первом байте и споткнется, потому по сути последовательный маршалинг в массив, а затем в строку - тоже варик
🅞leksiy
Я думаю там просто прикол реализации что если строка одна то в массив не оборачивается. Пахнет jsom
А как с пустым массивом? null? Честно говоря не в курсе этой реализации
kostyaBro
Получается массив интерфейсов а не строк
kostyaBro
придется кастить и перекладывать, не хорошо
kostyaBro
с null конечно edge case неприятный
🅞leksiy
Получается массив интерфейсов а не строк
Мда.. Ну по сути эти интерфейсы строки, да лишний цикл, самый верный способ имхо последовательно маршалить. Бенчи нужно прогнать)
kostyaBro
В protobuf есть тип union. Интересно глянуть как он jsonом маршалится. А ну хотя тамж другой маршалер. Мб protobuf заюзать)) раз он умеет