Bonifacio
Всем ку! Подскажите как решить такую проблему: есть джсон, в одном из полей может быть в разных случаях структура или массив. Как тогда разобрать его?
Дмитрий
Интерфейс?
Bonifacio
видимо придется лепить интерфейс, чего-то готового не нашел.
Maks
Или обязать апи принимать только массив)
Maks
А массив структур иди массив строк, чисел?
Alexey
Maks
Можно кста сделать 2 структуры а в метод в хедерах передавать какую из структур юзать для анмаршалинга. Тип specialdatatype struct/array
Bonifacio
А массив структур иди массив строк, чисел?
м.б. структура, м.б. массив структур.
Bonifacio
interface{} - устроил.
anhckie
не уверен может ли он так, но он удобен) глянь на гитхабе
Bonifacio
Спасибо
whois
Друзья, кто-нибудь сталкивался с кейсом, когда надо из runtime достать аргументы, переданные функции. Как это сделать? Или может не из runtime, может есть какой-то вариант лучше.
whois
может враппер перед функцией сделать?
Но я плохо обрисовал суть проблемы. Мне нужно когда произошла паника, из паники, где-то из runtime вытащить аргументы, которые передавались на вход злополучной функции.
Rostislav
Но я плохо обрисовал суть проблемы. Мне нужно когда произошла паника, из паники, где-то из runtime вытащить аргументы, которые передавались на вход злополучной функции.
если верно понял, то внутри этой функции defer внутри него recover. И там же логировать аргументы. Это похоже на то, что надо?
whois
а в стектрейсе разве не видно?
Нет. https://go.dev/play/p/PC-Cr6R6yaW?v=goprev Вообще, я разные варианты пробовал... Например, рефлексией, но не вышло. Потом пробовал вытащить данные из runtime.debug. Это текущий пример.
Мирон
наверное можно спаристь трейс и указатели через unsafe.Pointer(addr) смотреть
Мирон
addr, _ := strconv.ParseInt("0x1040c108", 0, 64)
whois
addr, _ := strconv.ParseInt("0x1040c108", 0, 64)
Да, я тоже об этом думал, но что-то костыльно это выглядит.
NU
всем привет, у меня код допустим на го1.19 написан, если я импортну чужой модуль который написан на 1.12, он должен сработать?
Кіт ✙
у го хорошая обратная совместимость но могут быть нюансы с системой модулей
Mark 𓁹
Добрый день/ночь, тут есть C# разработчики? Меня как-то напрягает сахар в C#, и думаю может перейти в Go. Насколько это хорошая идея? В основном пишут что C# с выходом .NET 6 стал в разы лучше, но код как был тяжелым так и остался)
Юра (Юрий Александрович)
Добрый день/ночь, тут есть C# разработчики? Меня как-то напрягает сахар в C#, и думаю может перейти в Go. Насколько это хорошая идея? В основном пишут что C# с выходом .NET 6 стал в разы лучше, но код как был тяжелым так и остался)
C# и Го - два почти не пересекающихся мира. Поэтому если есть склонности и интерес к освоению принципильно нового - то нормально. Если же не хочется обесценивать прошлый опыт, то Го не очень хорош для бывшего C# разработчика.
Mark 𓁹
C# и Го - два почти не пересекающихся мира. Поэтому если есть склонности и интерес к освоению принципильно нового - то нормально. Если же не хочется обесценивать прошлый опыт, то Го не очень хорош для бывшего C# разработчика.
Да нет, опыт явно не обесценится. Всё таки иногда нужны разные языки. Просто интересно действительно ли в разы удобнее создавать расширяемые серверы
Maks
Расширяемые сервера это к архитектуре. Или например к ерлангу)
Юра (Юрий Александрович)
Да нет, опыт явно не обесценится. Всё таки иногда нужны разные языки. Просто интересно действительно ли в разы удобнее создавать расширяемые серверы
Я неудачно выразился. Опыт не то чтобы обесценивается, он, конечно, помогает в работе, но значительная часть опыта непереносима напрямую: другие компоненты, другие инструменты разработки и отладки, другие подходы в разработке, другие реализации популярных паттернов.
Maks
Самое прикольное это отказ от наследования
Maks
Дак тайпинг он вроде как и так понятен
Maks
И тут не важен способ имплементации интерфейсов. А вот наследованное это целый столп ооп.
Maks
Я например в пыхе стараюсь не использовать наследование, кроме наследования от классов фреймворка
Maks
Ну она как бы есть, так то можно
Maks
И композиция и агрегация
Maks
Вопрос в том как они тут реализованы
Илья
можно стараться не использовать пыху
Maks
Немного иначе
Mark 𓁹
Я классы не очень люблю, проблема что в основном проще использовать композицию. Но из-за подхода шарпа именно к ООП как-то не очень комфортно
Мирон
можно стараться не использовать пыху
я который через ffi соединяю ее с го
Mark 𓁹
ооп удобный
Да, я имел ввиду именно наследование
Кіт ✙
Да, я имел ввиду именно наследование
наследование тоже удобно
Maks
Наследование такое себе. 1 уровень ок, а если приходится делать больше то уже не ок
Maks
3 уровня наследования уже не устойчивы к изменениям
Илья
3 уровня наследования это гей(м)дев moment
Maks
Это вполне реальные задачи
Mark 𓁹
Наследование такое себе. 1 уровень ок, а если приходится делать больше то уже не ок
Да, в этом и есть проблема. Но конечно наследование в разы эффективнее чем композиция (если нормально реализовать)
Maks
Это топ
Mark 𓁹
Эффективнее или понятнее? Лучше не композиция а агрегация
Да, но от ситуации зависит. Иногда удобнее композицию использовать
Mark 𓁹
Хотя агрегация читабельнее
Кіт ✙
хуемпозицию
Pavel
А вы знали что пхп быстрее го?
Maks
Хотя агрегация читабельнее
А еще ее проще тестировать)
Segmentation
А вы знали что пхп быстрее го?
Не быстрее ептаскрипт
Mr.
А вы знали что пхп быстрее го?
даже если так – для меня лично на го куда приятней писать. Даже будь он быстрее (в чем я лично сильно сомневаюсь) я не готов променять его скорость на голанг
Pavel
Вроде ни разу
Написал обычный круд на ноде, го и пхп, так вот пхп оказался самым быстрым, потом го, потом нода) и во всех стресс тестах погонял, везде пха быстрее отрабатывает, даже если распараллелить потоки в го
Nikita
Полностью поддерживаю, но факт есть факт, запилю на днях на хабар статью, кину сюда )
а как себя пыха ведет в многопоточности? там есть параллельное выполнение? или там конкурентное?
Mark 𓁹
Php быстрее Golang? Как? Тесты корявые
Pavel
а как себя пыха ведет в многопоточности? там есть параллельное выполнение? или там конкурентное?
Там вообще нет многопоточности, есть асинхронность с помощью дополнительной си - библиотеки, но то такое, конечно в задачах где нужно распараллеливание, го быстрее, но в обычном круде проигрывает на 20%
Maks
а как себя пыха ведет в многопоточности? там есть параллельное выполнение? или там конкурентное?
Я делал многопоточный код который парсил жсон из 600 тысяч ссылок)))) мейн процесс запускает через ексек другой процесс дл конкретной ссылки с определенным пид и каждую секунду мониторит пиды которые он создал. Если пида нет - значит можно еще один процесс запустить)
Pavel
Php быстрее Golang? Как? Тесты корявые
Возможно, но мне сложно представить что можно не так написать в элементарном круде, я тебя тегну как статью напишу, в рамках нее и подискуссируем )
Mark 𓁹
Я кстати когда только изучал программирование слышал что асинхронность это гипер фича, когда изучил не понял каким образом эффективное выполнение задач является чем-то новым
Mr.
Я кстати когда только изучал программирование слышал что асинхронность это гипер фича, когда изучил не понял каким образом эффективное выполнение задач является чем-то новым
ну оно не новое, фича старая. Другой вопрос мультипроцессинг, многопоточность. Тоже не новое, но с ними сложнее, возникают проблемы