Alexander
да тут про интерфейс nil, поэтому при вызове m() будет паника в рантайме
Alexander
дык это понятно
Илья
Что выведет код?
Илья
вот где пригодятся знания что defer recover() не отработает?
Alexander
)))
Emin Zalaev
И не понимать почему у тебя паника
Alexander
ну кстати, теоретически может быть при использовании стороннего кода где изначального инвалидский дизайн вот эти знания могут спасти, и можно представить, что несколько паник и рекаверов
Alexander
хотяааа
Emin Zalaev
Если будешь их знать с мыслью что пригодятся они не пригодятся
Emin Zalaev
Но если будешь их не знать с мыслью что не пригодятся
Emin Zalaev
Обязательно будет случай
Alexander
func safeWrapper() (err error){ defer func(){ if r := recover(); r != nil{ //извините, тут не помню как строку достать err = makeErrorFromRecover(r) } }() shittyPanicingFunc() }
Илья
@golangtests
Илья
пошел читать спецификацию языка
Alexander
конечно. я не могу оценить тех.компетенции. но мне кажется для мидла от 2х лет коммерческого опыта это вполне адекватно. нет?
техническое задание есть. ну и вообще можно пообщаться с тех интервьюверами. но это ваша кухня.
Grigory
Всем добрый день, читаю этот чат, вот решила спросить. Почему у меня уже 4 golang разработчика проваливают техинтервью? я сама не айти, знаю, что смотрят библиотеки, просят написать код. Неужели Го такой сложный язык? или дело в людях?
Дело в людях, вопрос только с какой стороны Язык на самом деле не сказать что сложный Тут либо кандидаты выдают себя не за тех, кем являются, либо интервьюеры предвзято проводят собеседование В любом случае стоит получить фидбек от тех, кто собесил
Patamen
@golangtests
Мне так нравятся эти многоточия Добавляют смысленности в самое бытие как продукт разума
Alexander
Мне так нравятся эти многоточия Добавляют смысленности в самое бытие как продукт разума
я знаю, что второе не сработает. а вот кейс чтобы знать сработает первое или нет я никак придумать не могу
Alexander
выведи понимание nil на новый уровень...
Alexander
Dmitriy
Они были на уровне мид/мид+
Alexander
вопрос почему оно не может сработать
ну вот с чего безтиповый nil приводится неявно к слайсу. мы нули разных типов выведенных от инта не даем сравнить, например, а тут такое
Alexander
или оно работает как типизация констант?
Alexander
точнее даже константных литералов или как оно грамотно там называется
Alexander
самое забавное, когда гуглишь четкое определение для чего-то в гошке, то какой-то официальной вики где четко расписано все от и до не находится. либо какие-то заметки, либо tour, либо описание нового релиза го
Илья
len и cap 0
Alexander
мне кажется, тут не приведение даже. а типа если у тебя есть func foo(bar uint64), ты пишешь foo(0) - автоматом 0 передается uint64
Alexander
вот как эта штука называется. типа как константа нетипизированная, для которой при применение компилятор создает в нужном месте типизированную
Alexander
но пожалуйста, объясните мне как найти вот для такого запроса, например, "golang nil literal" какую-то инфу официальную, на официальном сайте, справочную, четкую, не какое-то речеподобное описание
Илья
пиши лично роб пайку
Alexander
я мб что-то делаю не так, но нахожу что-то на других сайтах, где вроде как бы и правильно, но не сказать, что это четко как в аптеке все и 100% ничего не пропущено
Alexander
https://cplusplus.com/reference/ostream/ostream/operator%3c%3c/ - вот хотя бы такого уровня
Pavel
@golangtests
https://go.dev/play/p/Loe1i5pbg3A
Alexander
https://go.dev/play/p/Loe1i5pbg3A
забавно, там ничего, а так стэковерфлоу
Alexander
оказывается даже интересно
Alexander
вот непонятно, нахрена вносить такие элементы как приватный метод в интерфейсе
Alexander
но интересно, что проблема даже не в том, что нил реализация вызывается
Илья
а из-за чего тут переполнение стека?
Илья
рекурсия?
Alexander
ага
Alexander
получается вроде foo(){ foo()}
Илья
ну вызывает x, там t
Илья
рекурсивно t
Илья
и вызов m
Илья
почему в луп уходит?
Alexander
он же вызывает по сути функцию по указателю
Valeriy
ну и?
У тебя может ссылка на данные поменяться
Alexander
У тебя может ссылка на данные поменяться
ну ок. причем тут это вообще? если сделать такую же реализацию как у аппенд сейчас, что поменяется кроме того, что код короче?
Alexander
можно заменить, можно добавить
Anton
всем привет, может у кого более элегантное решение, костыли прудить не хочу суть: приходит (grpc-gateway) в теле запроса набор параметров: id - value, app - value и т.д из этих параметров нужно сделать url-like строку по типу app=value&id=value (порядок сортировки важен, поскольку потом из этой строки будет делаться хэш). но есть проблема: приходящие данные динамические (могут придти не все поля со списка (список заранее известен), и соответственно гейтвэй мне вернет нулевые значения для некоторых полей). вопрос: как адекватно сделать url набор параметров из этого безобразия? что попробовал: map[string]string не подойдет, по идее. отсортировать-то можно, но при итерации по мапе будет рандом, а порядок сохранить - важно []string? его отсортировать легко, при итерации порядок не потеряется. но соотнести значения с ключами потом проблематично, только если не городить костыль пробовал пакет net/url - он спокойно парсит и пропускает пустые значения (id=&app=value)
Patamen
всем привет, может у кого более элегантное решение, костыли прудить не хочу суть: приходит (grpc-gateway) в теле запроса набор параметров: id - value, app - value и т.д из этих параметров нужно сделать url-like строку по типу app=value&id=value (порядок сортировки важен, поскольку потом из этой строки будет делаться хэш). но есть проблема: приходящие данные динамические (могут придти не все поля со списка (список заранее известен), и соответственно гейтвэй мне вернет нулевые значения для некоторых полей). вопрос: как адекватно сделать url набор параметров из этого безобразия? что попробовал: map[string]string не подойдет, по идее. отсортировать-то можно, но при итерации по мапе будет рандом, а порядок сохранить - важно []string? его отсортировать легко, при итерации порядок не потеряется. но соотнести значения с ключами потом проблематично, только если не городить костыль пробовал пакет net/url - он спокойно парсит и пропускает пустые значения (id=&app=value)
Ну Сама по себе концепция пустот уже неприятная в плане ответа
Patamen
всем привет, может у кого более элегантное решение, костыли прудить не хочу суть: приходит (grpc-gateway) в теле запроса набор параметров: id - value, app - value и т.д из этих параметров нужно сделать url-like строку по типу app=value&id=value (порядок сортировки важен, поскольку потом из этой строки будет делаться хэш). но есть проблема: приходящие данные динамические (могут придти не все поля со списка (список заранее известен), и соответственно гейтвэй мне вернет нулевые значения для некоторых полей). вопрос: как адекватно сделать url набор параметров из этого безобразия? что попробовал: map[string]string не подойдет, по идее. отсортировать-то можно, но при итерации по мапе будет рандом, а порядок сохранить - важно []string? его отсортировать легко, при итерации порядок не потеряется. но соотнести значения с ключами потом проблематично, только если не городить костыль пробовал пакет net/url - он спокойно парсит и пропускает пустые значения (id=&app=value)
Ты ответ анмаршилиш в структуру или сразу в пакет отправляешь? П.с Парень ожил
Anton
не, не умер
Anton
ахах
Anton
не совсем понял, про какой "ответ" идет речь. уточни, пожалуйста
Anton
короче решил вопрос не самым лучшим методом по итогу собрал мапу со всеми значениями, потом в цикле прошелся по ней - делитнул пустые значения далее зааппендил в слайс fmt.Sprintf(%s=%s) и потом уже sort.Strings(slice) и в конце strings.Join(slice, "&")
Сергей
@golangtests
здесь фокус в зацикливании при вызове метода, а не про nil-интерфейс. поэтому и стек вызовов переполняется. Бесконечная рекурсия.
Anonymous
как из слайса удалить все повторяющийся элементы? Допустим есть слайс: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9 , 8, 7, 6, 5, 4, 3, 2, 1, 0]
Anonymous
это лишь допустим,там много чо может быть
Anonymous
как удалить повторяющийся?
Anonymous
типо,не брав элемент и проверяя его по всему слайсу и так с кадлым
Emin Zalaev
Всего лишь надо было загуглить..
Emin Zalaev
А мне на собесе в озон не давали
🕷
А мне на собесе в озон не давали
Дурачки потому что. Самые важные навыки прогера это умение гуглить и работать в команде
Emin Zalaev
Можно map[int]struct{}
Илья
Можно map[int]struct{}
оптимизация