Найти в Дзене
Сегодня последний день весенней распродажи на Stepik. Последний шанс взять любой из PRO Go‑курсовсо скидкой — дальше цены вернутся к обычным. Вот что можно успеть забрать сегодня: 🔨 PRO Go. Для продвинутых 📉 28 900₽ → 23 120₽ Курс для тех, кто хочет понимать Go глубже: память, интерфейсы, структуры, generics и внутренняя механика языка. 📆 PRO Go. Базовый курс по структурам данных 📉 9 200₽ → 7 360₽ Фундамент, без которого не обходится ни один разработчик: массивы, списки, стеки, очереди, хеш‑таблицы. 🔨 PRO Go. Алгоритмы поиска и сортировки 📉 9 200₽ → 7 360₽ Поиск, сортировки, анализ сложности — всё, что нужно для уверенного алгоритмического мышления. 🧙 PRO Логические задачи 📉 6 200₽ → 4 960₽ Курс, который прокачивает логику, внимательность и умение мыслить структурно. 🎁 Скидку можно увеличить. Просто напишите вашему наставнику — он подскажет, как оформить покупку максимально выгодно. ➡️ Написать наставнику 🔥 ⏳ Сегодня до 23:59 — дальше распродажа закончится. Если хотели взять курс — это тот самый момент.
2 дня назад
🔨 Продолжаем разбирать интересные темы из курса PRO Go для продвинутых.
Сегодня поговорим про интерфейсы. Интерфейсы — это не страшное слово из учебников, а очень практичный инструмент. Они помогают писать код, который не зависит от конкретных реализаций. Проще говоря — вы описываете, что должен уметь объект, а не как он это делает. 💪 Благодаря интерфейсам код становится понятнее и легче расширяется. Вы сможете создавать универсальные решения, которые работают с разными типами данных — и при этом остаются простыми и логичными...
1 месяц назад
Сегодня — про структуры.
Хочу немного приоткрыть завесу над тем, что ждёт вас в PRO Go Для продвинутых. Структуры — это способ собрать данные в одно целое. Не набор разрозненных переменных, а осмысленная сущность, с которой удобно работать. Так в Go моделируют людей, товары, процессы — всё, что существует в реальном мире. Вы увидите, как структуры помогают упорядочивать код, добавлять поведение и строить архитектуру...
1 месяц назад
Стартует курс PRO Go для продвинутых
❤️Друзья, в этот замечательный день хочу сделать вам небольшой подарок. В честь своего дня рождения я дарю скидку 30% на курс ➡️ PRO Go для продвинутых ⬅️ Скидка будет действовать ровно неделю — до 6‑го числа включительно. Если у вас возникнут...
1 месяц назад
PRO Go для продвинутых — полностью готов.
Последние посты были не просто отдельными заметками. Это были небольшие фрагменты из нового курса PRO Go для продвинутых. И да — курс полностью готов. Я вложил в него много времени, сил и энергии, чтобы получился спокойный, структурный и по‑настоящему продвинутый материал...
1 месяц назад
🤓generics, когда понимаешь, что копипастить — это не путь
😩 Пишешь одинаковые функции для разных типов данных, копируешь один и тот же код по несколько раз, и всё равно чувствуешь, что это костыли. А потом открываешь чужой проект — и там всё элегантно, коротко, аккуратно. И ты такой: «Ну как? Как он это сделал?» Как выглядит боль Ты начинаешь с простого: func SumInt(a, b int) int { return a + b } func SumFloat(a, b float64) float64 { return a + b } 🤡И вроде всё нормально...
1 месяц назад
defer: штука, которую сначала не понимаешь
Ты читаешь чужой код и видишь defer. А сам никогда не использовал. И думаешь: А зачем это вообще нужно? Пока всё просто — функции короткие, ошибок мало, ресурсы не требуют закрытия. Но потом появляется реальный код — с кучей проверок, return в середине, и вдруг оказывается, что ты забыл что‑то сделать перед выходом. Как выглядит боль: func calc() (int, error) { if err := check(); err != nil { return 0, err } fmt.Println("start") if somethingWrong { return 0, fmt.Errorf("bad input") } fmt.Println("finish")...
1 месяц назад
🔨ошибки: почему всё выглядит просто… пока не начинаешь писать свой код После основ большинство думает, что ошибки — это что‑то второстепенное. Тип error есть, где‑то он возвращается — и ладно. Но как только пишешь свой первый проект, всё резко меняется. Например, у тебя есть функция, которая что‑то делает: func divide(a, b int) (int, error) { if b == 0 { return 0, errors.New("bad input") } return a / b, nil } А в main ты видишь: result, err := divide(10, 0) if err != nil { fmt.Println("failed") } И всё. failed Что упало? Где? Почему? Что за bad input? Какой именно вход? Где искать проблему? Это реальная боль после основ: ошибки есть, но пользы от них ноль. Как сделать минимально лучше — и сразу полезнее func divide(a, b int) (int, error) { if b == 0 { return 0, fmt.Errorf("divide: b=0 is invalid") } return a / b, nil } func main() { result, err := divide(10, 0) if err != nil { fmt.Println("error:", err) return } fmt.Println(result) } Теперь вывод будет таким: error: divide: b=0 is invalid И сразу понятно: — что делали → делили числа — где ошибка → в функции divide — почему → b = 0 Минимальное изменение — а ясности в разы больше❤️ #GoПрактика
2 месяца назад
🏴‍☠️ После истории со строками следующая типичная ловушка — слайсы. На базовом уровне кажется, что это просто удобный список. Сделал копию, поменял один — ожидаешь, что второй останется прежним. Но в Go всё устроено иначе. 🤓 Слайс — это не сами данные. Это структура, которая указывает на участок массива: указатель, длина и ёмкость. Поэтому когда вы пишите: a := []int{1, 2, 3} b := a b[0] = 99 оба слайса показывают одно и то же изменение. a и b — разные переменные, но память у них общая. 🦄 Отсюда и все странности, которые ловят почти все: - меняешь один слайс — меняется другой; - append иногда создаёт новый массив, а иногда продолжает старый; - структура со слайсом ведёт себя «не так», когда ты её копируешь; - отладка превращается в расследование, кто на что ссылается. 🍾И дело не в том, что Go чудит)) Просто модель памяти слайсов не укладывается в голове, пока её не объяснишь себе правильно. Как только начинаешь мыслить не списками, а окнами в массив, всё становится предсказуемым. Появляется понимание, когда данные действительно копируются, а когда ты просто создаёшь ещё одну ссылку на те же байты. Это уже шаг за пределы базового уровня 💪 Тут начинается тот самый взрослый Go, где ты не просто пишешь код, а понимаешь, как он живёт в памяти ❤️
2 месяца назад
💻Иногда мы так увлекаемся работой, учёбой и постоянным движением вперёд, что забываем о самом простом — о том, что отдых тоже часть пути. Без пауз невозможно сохранять темп, оставаться в ресурсе и продолжать учиться с интересом, а не через силу. После плотной работы над курсом я наконец позволил себе немного выдохнуть. Провёл пару дней на природе, в компании друзей — и это оказалось именно тем, что нужно, чтобы перезагрузиться. На фото и видео — мой верный песель Рюк. Он почти всегда рядом, во всех приключениях, и, кажется, отдыхает лучше меня. Если вам зайдёт такой формат небольших личных постов, буду иногда делиться моментами из жизни. Всё-таки мы тут не только PRO Go, но и про людей, которые этот Go изучают❤️
2 месяца назад
🤓Почему строки в цикле начинают тормозить? Многие наверняка сталкивался с этим моментом. Пишешь простой цикл, добавляешь символы к строке — всё выглядит логично и безобидно: s := "" for i := 0; i < 10000; i++ { s = s + "a" } 🤡Но запускаешь программу — и она начинает работать заметно медленнее, чем ожидалось. Вроде бы ничего сложного, просто добавляю букву, а ощущение такое, будто Go делает что‑то лишнее. И он действительно делает. Строка — это не пластилин, который можно растянуть. Это скорее стеклянная плитка: к ней нельзя просто «приклеить» кусочек. Каждый раз, когда ты пишешь s = s + "a", создаётся новая строка, копируется туда старая, добавляется новый символ — и так на каждой итерации. 💪 На маленьких примерах это незаметно. Но как только строка становится длиннее, а операций — сотни или тысячи, программа начинает тратить всё больше времени на создание новых копий. И вот тут приходит понимание: строки — это не просто «текст в кавычках». У них есть своя цена, свои правила и свои подводные камни. И если их не учитывать, код начинает работать медленнее, чем должен. Это уже шаг за пределы базового уровня. Дальше начинается разговор о том, как работать со строками так, чтобы и код был понятным, и программа не задыхалась от лишних операций❤️
2 месяца назад
Вот такие комментарии напоминают, что путь разработчика — это не только успехи, но и честные моменты отчаяния. Каждый, кто учил программирование, узнает себя в этих строках — и да, это абсолютно нормально 😩
2 месяца назад