Maks
там из за того что x определен в возвращаемом значении функции
Maks
мы его в деффере переписываем
Maks
инкрементим
Maks
наверное в случае когда сигнатурой определено возвращаемое значение - у него скоуп больше и на него ссылка остается одна и та же, что у дефера что у того кто этот метод вызывает.
Maks
примерно так
Maks
получается после ретурна. типо как файнали
Maks
не прочитал что ты написал тут по этому сам додумывал а оказалось вот он твой ответ на наш вопрос)
Vladislav
Alexander
https://go.dev/tour/flowcontrol/12 - первое предложение. одно предложение из официального источника
Alexander
первое
Maks
Ну только я просто свои мысли написал)))
Alexander
Maks
да там уже достаточно вот этого: Deferred anonymous functions may access and modify the surrounding function’s named return parameters.
Vladislav
Go check out my Go code at https://play.golang.org/p/m4Um1XI6Pv9.go в чем может быть проблема?
Alexander
Alexander
я только одно могу предлположить: в случае именованного возврата оно считается как ссылка из которой надо достать значение, а в случае просто локальной переменной заранее вычисляется значение, а потом делается дефер вызов
Alexander
Maks
Maks
но не
Maks
хуйня
Alexander
да не, типа аргументы вычисляются сразу, что как бы логично
Alexander
хотя конечно, до кого-то может не дойти
Alexander
одно радует: нормальный человек так писать код не будет
Alexander
даже такой вариант возвращает 5, так что моя концепция подтверждается:
func foo()int{
a := 5
b := &a
defer func(){
a=3
}()
return *b
}
Alexander
хотя... я кстати кейс могу предусмотреть:
func getTaskIDs(db *sql.DB, ...) (ids []int, err error){
...
rows, err := db.Query(...)
if err != nil{...}
defer func(){err = rows.Close()}()
...
}
Alexander
вот последняя строка запишет нам ошибку закрытия ровсов в ответ. а так мы можем что другое закрывать
Alexander
Vladislav
нашел вот такое https://pkg.go.dev/golang.org/x/exp/constraints#Ordered
Andrey
Только не забывай, что это экспериментальная репа
Vladislav
Maks
https://www.youtube.com/watch?v=ZXx3cSFdmZ4
Maks
челы бешенные
Anonymous
мужики
Anonymous
дженерики в прод кто-то юзал?
Anonymous
как оно?
Herman
вот мне кто-то выше втирал
Herman
аряря женерики
Herman
Anonymous
лучше не юзать?
Anonymous
ок
Herman
линтеры отвалились как минимум
Herman
надо ждать пока починят
Anonymous
еще такой вопросик
Anonymous
реально ли докер юзать на винде без всл?
Anonymous
винда сборки старой, а обновлять не хочется
Anonymous
типо в компонентах отсутсвует подсистема линуха
Andrey
Жди лучше 1.18.1, мало ли какое гавно всплывет
Anonymous
Anonymous
страх есть
Anonymous
такое ощущение что у меня проект с ними медленнее работает
Anonymous
хз мб паранойя
Anonymous
мб я нагавнокодил
Andrey
Я вот не копал глубоко, а они какую стратегию выбрали поитогу: генерить их в реалтайме или на этапе компиляции?
Anonymous
Andrey
компиляция
Тогда странно, что просадки. Надо ждать некст версии
Anonymous
как на зло сейчас еще читаю, что го 18 медленнее го 17
Anonymous
не хочется код дублировать
Anonymous
https://github.com/golang/go/issues/49569
Herman
ну так понятное дело компайл тайм замедитлся
Herman
он ж ходит смотрит эти дженерики
Anonymous
Herman
🅞leksiy
А обновить?
Herman
https://github.com/golangci/golangci-lint/issues/2649
Anonymous
а
Anonymous
ну мб
Anonymous
я в страхе сижу
Anonymous
задеплоил код с дженерикми)))
Andrey
Логично в время компиляции сильно вырастет. С++ тот же как пример подходит. Написал дженерик, ждешь сразу дольше
Anonymous
как же много на гите про дженериков плохого написано
Anonymous
зачем я это читаю)))
Anonymous
надо было сразу прочитать, а не писать говнокод(((((