Изучаем Golang. Урок №10. Указатели (2). Usecases

preview_player
Показать описание
В данном видео мы узнаем как и в каких случаях использовать указатели

0:00 Содержание
0:57 Передача параметров по значению и указателю
5:12 Сайд эффекты
5:43 Проверка наличия значения
8:29 Экономия памяти
9:10 Мы сделали это
Рекомендации по теме
Комментарии
Автор

Спасибо за доступное объяснение указателей. Твои видео лучше чем от Art of Developent.
Не понял как ты на ровном месте, без предварительного объявления стали использовать термин side effects. Я понимаю английский, но просто это сбило с толку. Хотя бы два слова на русском что ты имел в виду по этому поводу.

bublick
Автор

Спасибо, у тебя один из лучших каналов, фишка, у тебя именно ты говоришь о тонкостях, что даже в книгах некоторых не пишут. Давай еще, если не сложно напишем проект, очень интересны структуры, как лучше сделать то или иное. Например током нигде не рассказано как конфиги для приложений ... Например вообще зачет конструкция: return money != nil, блин ну вот где такое увидишь? А так же в основном и пишут, ты просто смотришь потом на реальный код и думаешь, я вообще go изучал или что ...

pavel
Автор

лайк поставил, подписан уже давно - будем смотреть следующие уроки

andreichemeris
Автор

Но хотелось бы большей точности в словах - например значение не перемещается, а копируется - разные же вещи...

sergeykosovsky
Автор

Во первых, все же стоило сначала рассмотреть структуры, чтобы незнакомые с этим понятием люди в конце видео не задавались вопросом "а? что? какие структуры?".

Во вторых, применение указателей для структур как раз основная причина указатели то и использовать, и нельзя от этого отмахиваться и вместо этого показывать натянутыю примеры. Особенно когда дело доходит до хранения структур внутри стукрур, массивов структур и случаев, когда элементы структур часто меняются (конкретно мой случай из текущего проекта - хранение информации о вебсокет соединениях и подсписках на события, и каждый элемент - сложная вложенная структура, часто добавляемая и удаляемая на дисконекте клиента).

В третьих о натянутых примерах.

Человек, учившийся по предыдущим лекциям и не знающий ничего больше, никогда не догадается сделать функцию вычисления квадрата числа в процедурном стиле паскаля. Потому что сначала нужно знать о такой концепции. Но автор намеренно придумал такой глючный пример, чтобы его можно было "починить" указателями.

О кошельке. Напоминает НУЛЛ в базах данных. В тех же случаях зачастую используется как и придумал автор. То есть дополнительное значение. Вот только проблема в том что..

1. Функция принятия решения о суммах на счету не должна разбираться со случаем отсутсвия кошелька. Принцип СОЛИД. Это должно быть на уровень выше. Вот просто так правильнее.
2. Весь мой 20летний опыт говорит что для флага "наличие/отсутвие кошелька", надо, собсвенно, иметь ФЛАГ. то есть булевую переменную. Выгоднее во всех случаях, от поиска по массиву с вычленеинем колонки (список имеющих / неимеющих) и этот код будет читаться на порядок лучше, до индексации в тех же майэскуэлях и монгодибишках. Смысл прост как дважды два - по булевому значению сама святая Ада Лавлейс велела делать индексы. Поиск по этому значению будет быстрее, а очевидно, что в запросах такое ограничение будет использоваться (выбрать всех без кошилька чтобы прорекламировать кошелек, выбрать всез с кошелькам для финотчёта...). Во вторых, индекс то можно создать в любом случае, по любому полю, но я думаю, не нужно объяснять, что индекс по булевому значению будет меньше индекса по флоату (с полурандомным значением!) или "децимал". Это не говоря уже о том, что маленький индекс может ещё и закешироваться в памяти, то есть его скорость будет ЕЩЁ ВЫШЕ большого и намного.

Я к чему. Не приводите плохие примеру - вы учите людей плохим методикам. Плохие методы почти универсально плохи во всех случаях ПО.

vovasn
Автор

ужасно, все мельчешишь скролом экрана, закоментированные строки очень мешают и ты постоянно в разные места скролишь картинку, невозможно сконцентрироваться, и что за фигня - создал переменную а под ней этуже переменную меняешь функцией, а сама функция написана далеко внизу?- 3 раза нужно возвращаться по экрану что бы увидеть - задолбаться можно

eotdbjq
Автор

в ф-я hasWallet, money - указател. Почемъ в теле return money != nil ? (return *money !=nil) Сам понял, что адрес в памяти, указатель (mem) nil, а *mem паника.

softdevstankov