Alexander
да тут про интерфейс nil, поэтому при вызове m() будет паника в рантайме
Alexander
дык это понятно
Илья
Илья
вот где пригодятся знания что
defer recover() не отработает?
Alexander
)))
Emin Zalaev
Emin Zalaev
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()
}
Илья
Илья
пошел читать спецификацию языка
Alexander
Alexander
Patamen
Мне так нравятся эти многоточия
Добавляют смысленности в самое бытие как продукт разума
Илья
Alexander
выведи понимание nil на новый уровень...
Alexander
Dmitriy
Dmitriy
Они были на уровне мид/мид+
Grigory
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
https://go.dev/play/p/Loe1i5pbg3A
Alexander
оказывается даже интересно
Илья
Alexander
вот непонятно, нахрена вносить такие элементы как приватный метод в интерфейсе
Alexander
но интересно, что проблема даже не в том, что нил реализация вызывается
Илья
а из-за чего тут переполнение стека?
Илья
рекурсия?
Alexander
ага
Alexander
получается вроде foo(){ foo()}
Илья
ну вызывает x, там t
Илья
рекурсивно t
Илья
и вызов m
Илья
почему в луп уходит?
Alexander
он же вызывает по сути функцию по указателю
Valeriy
Илья
Alexander
Valeriy
ну и?
У тебя может ссылка на данные поменяться
Valeriy
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, "&")
Сергей
здесь фокус в зацикливании при вызове метода, а не про nil-интерфейс.
поэтому и стек вызовов переполняется. Бесконечная рекурсия.
Anonymous
как из слайса удалить все повторяющийся элементы? Допустим есть слайс:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9 , 8, 7, 6, 5, 4, 3, 2, 1, 0]
Anonymous
это лишь допустим,там много чо может быть
Anonymous
как удалить повторяющийся?
Emin Zalaev
как из слайса удалить все повторяющийся элементы? Допустим есть слайс:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9 , 8, 7, 6, 5, 4, 3, 2, 1, 0]
Закинуть в мапу
Anonymous
типо,не брав элемент и проверяя его по всему слайсу и так с кадлым
🕷
как из слайса удалить все повторяющийся элементы? Допустим есть слайс:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9 , 8, 7, 6, 5, 4, 3, 2, 1, 0]
https://www.geeksforgeeks.org/how-to-remove-duplicate-values-from-slice-in-golang/
Emin Zalaev
Всего лишь надо было загуглить..
Emin Zalaev
А мне на собесе в озон не давали
Emin Zalaev
Можно map[int]struct{}
Илья