Size: a a a

2020 June 17

💭П

💭 Руслан Прохоров... in rannts
Sergey Arkhipov
Рефакторить потихоньку. Нормальных проектов не бывает
Это чудой проект. Они даже исправление багов со скрипом принимают, причем баги существуенные и на из стороне (
источник

БС

Байт Словович... in rannts
Sergey Arkhipov
Это было с первых релизов. Оно просто генериками не называлось, но являлось
фиг знает, помню смотрел какой то проект и там были ListInt, ListFloat или как то так, Помню что очень удивило, что даже стандартные  коллекции были не генериками. Повторюсь детали не понмю, помню ощущение ужаса. Функции вида parse_int, parse_float, parse_str, меня не удивили бы, а вызвали бы легкую грусть.
источник

SA

Sergey Arkhipov in rannts
Да, мне бы тоже было неприятно 🙂 Но нет, не все так плохо
источник

A🍊

Andrey 🍊 in rannts
У меня прям вот так же на ноуте (идеяпад), хз, иногда действительно попадаю пальцем не туда, но там защита сделана, при коротком нажатии не гаснет. Но, конечно, учитывая размер полей сбоку клавы, можно было бы изящнее сделать.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Да, в том буке что мне выбрали для жены также сделано. На вид конечно красиво, а как в реальном использовании - фиг знает, может тоже такая-же защита от короткого нажатия.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Sergey Arkhipov
Коллекции объектов в предположении, что ты не контроллируешь, как она будет использоваться. Если ты пишешь для себя, то сразу же оказывается, что можно спокойно пользоваться интерфейсами
При использовании интерфейсов получается, что если это коллекция, то она будет возвращать тебе не твой исходный тип, а интерфейс от него. Как это в Go разруливается? Можно как-то безопасно скастовать интерфейс в конкретный тип, который был изначально?
источник

SA

Sergey Arkhipov in rannts
Можно и не безопасно, можно и в паникой в рантайме. Есть даже специальный switch по типу интерфейса (switch myvar.(type) {})
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Т.е. данные хранят внутри себя метадату, о том какого они типа?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Даже примитивные типы?
источник

SA

Sergey Arkhipov in rannts
a := b.(int) - так взорвется, если b не приведется
c, ok := b.(int) - так не взорвется, а в переменной ok будет получилось скастовать или нет
источник

SA

Sergey Arkhipov in rannts
не совсем так. интерфейс - это структура, которая хранит объект + метаданные. то есть наоборот
источник

SA

Sergey Arkhipov in rannts
можно даже не к примитивному типу приводить, а к другому интерфейсу
источник

SA

Sergey Arkhipov in rannts
причем его объявить буквально строчкой выше
источник

KK

Kirill (Cykooz) Kuzm... in rannts
А, ну если интерфейс хранит тип - это уже лучше.
источник

SA

Sergey Arkhipov in rannts
Хранит, хранит. Это, кстати, частая причина ошибок поначалу. гуглится как interface is nil
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Но в тяжёлых случаях это конечно получается оверхед, и для highload и bigdata использовать интерфейсы с коллекциями - это доп. траты памяти и CPU на работу с этой структурой.
источник

SA

Sergey Arkhipov in rannts
это мелочи на самом деле, все работает очень-очень быстро и эффективно. но если хочется микрооптимизировать, то можно и соптимизировать
источник

SA

Sergey Arkhipov in rannts
если в языке есть рефлексия, то у него объекты почти всегда так и выглядят. в джаве так, в сишарпе
источник

SA

Sergey Arkhipov in rannts
ну, может не буквально так, но концептуально схоже
источник
2020 June 18

A🌚

Al 🌚l in rannts
Kirill (Cykooz) Kuzminykh
А, ну если интерфейс хранит тип - это уже лучше.
Интерфейс - это по сути структура с двумя указателями
источник