Библиотека задач по Go | тесты, код, задания
Open in Telegram
Задачи и тесты по Go для тренировки и обучения. Учиться у нас: clc.to/4o0_XA По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197
Show more6 687
Subscribers
-824 hours
-257 days
-6230 days
Posts Archive
Можно ли увеличить поле структуры прямо внутри map?
Go 1.22+. Скомпилируется ли программа и что выведет?
package main
import "fmt"
type User struct{ Score int }
func main() {
users := map[string]User{
"ann": {Score: 1},
}
users["ann"].Score++
fmt.Println(users["ann"].Score)
}
👾 — 1
👍 — Ошибка компиляции
🥰 — 2
⚡️ — Паника во время выполнения
Ответ: 👍 — Ошибка компиляции.
Значение структуры, полученное через индексирование map, не предоставляет адресуемое поле для такого изменения. Можно получить копию: user := users["ann"], изменить user.Score и записать структуру обратно: users["ann"] = user. При этом users["ann"]++ для map[string]int — другая операция, она допустима.
Правило в спецификации Go
Библиотека задач по Go📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше.
В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.
Например, можно совместить два направления по работе с ИИ:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета. А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога. Акция действует до 31 октября включительно ⏳ ⏮️ Пора прокачать свой стек
Изменит ли range исходный срез структур?
Go 1.22+. Что выведет программа?
package main
import "fmt"
type User struct{ Score int }
func main() {
users := []User{{Score: 1}, {Score: 2}}
for _, user := range users {
user.Score += 10
}
fmt.Println(users[0].Score, users[1].Score)
}
👾 — 11 12
👍 — 11 2
🥰 — 1 2
⚡️ — Ошибка компиляции
Ответ: 🥰 — 1 2.
В user попадает копия очередной структуры. Меняется поле этой копии, а элементы среза остаются прежними. Чтобы изменить исходные значения, можно перебирать индексы и выполнять users[i].Score += 10. Правило новых переменных цикла в Go 1.22 не превращает копию структуры в ссылку.
Правило в спецификации Go
Библиотека задач по GoКогда append изменит общий массив, а когда создаст новый?
Go 1.22+. Что выведет программа?
package main
import "fmt"
func main() {
a := [4]int{1, 2, 3, 4}
free := a[:2]
limited := a[:2:2]
x := append(free, 9)
y := append(limited, 8)
fmt.Println(a[2], x[2], y[2])
}
👾 — 9 9 8
👍 — 8 8 8
🥰 — 3 9 8
⚡️ — Ошибка компиляции
Ответ: 👾 — 9 9 8.
У free длина 2 и ёмкость 4: append использует исходный массив и записывает 9 в a[2]. У limited длина и ёмкость равны 2. Для добавления элемента нужен новый массив, поэтому y[2] равен 8, а a[2] остаётся 9. Само выражение a[:2:2] копию массива не создаёт.
Правило в спецификации Go
Библиотека задач по GoПочему два defer видят разные значения одной переменной?
Go 1.22+. Что выведет программа?
package main
import "fmt"
func main() {
n := 1
defer fmt.Println("arg", n)
defer func() {
fmt.Println("closure", n)
}()
n = 2
}
👾 — arg 1, затем closure 2
👍 — closure 1, затем arg 1
🥰 — arg 2, затем closure 2
⚡️ — closure 2, затем arg 1
Ответ: ⚡️ — closure 2, затем arg 1.
Аргумент n для fmt.Println вычисляется при выполнении первого defer и сохраняется как 1. Замыкание читает переменную позднее и видит 2. Отложенные вызовы выполняются в обратном порядке регистрации: сначала замыкание, затем fmt.Println с сохранённым аргументом.
Правило в спецификации Go
Библиотека задач по Go😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция!
До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.
Например, можно совместить:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥 Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога. Акция действует до 31 октября включительно ⏳ ⏬ Собрать свой учебный билд
Какое значение запомнит метод, сохранённый в переменную?
Go 1.22+. Что выведет программа?
package main
import "fmt"
type Counter struct{ N int }
func (c Counter) Value() int {
return c.N
}
func main() {
c := Counter{N: 1}
saved := c.Value
c.N = 2
fmt.Println(saved(), c.Value())
}
👾 — 2 2
👍 — 1 2
🥰 — 1 1
⚡️ — Ошибка компиляции
Ответ: 👍 — 1 2.
При создании saved метод с получателем по значению сохраняет копию c, где N равен 1. Изменение исходной структуры не меняет эту копию. Прямой вызов c.Value() использует уже обновлённое значение N = 2.
Правило в спецификации Go
Библиотека задач по GoGo 1.23 и новее. Потребитель range по функции завершил цикл через break. yield вернул false. Что обязан сделать итератор?
Repost from Библиотека программиста
👀 Как вы смотрите видео?
Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране?
Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить.
🕰️ Опрос займёт около 3 минут.
В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео.
🔗 Поделиться опытом
🐸 Библиотека программиста
🔴AI кодинг интервью с разработчиком из международного FinTech в четверг в 19:00
ДА! Вайбкодинг реально начали проверять на интервью, поэтому мы нашли собеседующего, который проводит AI-секцию в международном финтехе, чтобы вы увидели что на ней спрашивают и как к ней подготовиться.
Как это будет:
📂 Александр Дмитриев, разработчик из известного международного финтеха, ex-VK, ex-Ozon проведет вайбкодинг секцию разработчику-добровольцу;
📂 Александр будет задавать реальные вопросы с секций, которые проводил сам и комментировать ответы;
📂 В конце можно будет задать любой вопрос Александру.
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для разработчиков, которые хотят сменить работу, повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot
Реклама.
О рекламодателе.
Сколько элементов может быть в бакете у мапы?
😭 Как не потратить недельный лимит AI-кодинга за три дня?
Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.
🔘 Поговорим о том:
— когда дорогая модель действительно нужна, а когда хватит дешёвой;
— сколько стоит один прогон и куда уходят токены;
— какие задачи можно отдавать субагентам;
— как настроить маршрутизацию моделей;
— что проверять в AI-коде перед merge.
✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после.
⬇️ 18 сентября, 19:00 МСК
⬇️ 1,5 часа · бесплатно
⬇️ Арсений Харланов и Олег Лайок
💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы разберём на вебинаре.
🔗 Зарегистрироваться на вебинар
Горутины и каналы: основы параллелизма в Go. Бесплатный урок курса «Go-разработчик. Базовый уровень»
Конкурентность — одна из главных особенностей Go, но именно здесь начинающие разработчики чаще всего сталкиваются с трудноуловимыми ошибками. Неправильная работа с горутинами, каналами или синхронизацией может привести к состояниям гонки, взаимным блокировкам и утечкам ресурсов, которые сложно найти и исправить.
На открытом уроке 18 августа в 20:00 разберём, как устроен параллелизм в Go и как безопасно использовать горутины в своих проектах. Поговорим о различиях между горутинами и системными потоками, научимся запускать параллельные задачи, организовывать обмен данными через каналы и применять базовые механизмы синхронизации.
Урок будет полезен разработчикам, которые хотят уверенно использовать конкурентность Go в реальных приложениях.
👉 Записаться: https://otus.pw/D28A8/?erid=2W5zFGxyEad
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
❓ Что делает ключевое слово implements в Go
Repost from Proglib.academy | IT-курсы
👅 Самое сложное — выбрать не курс, а направление
Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science.
🔜 Именно поэтому подписка на обучение многим оказывается удобнее отдельных курсов. Можно спокойно переключаться между темами, когда меняются задачи, а не покупать новую программу каждый раз.
В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков.Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки 😎 🔗 Узнать подробнее 🏃♀️ Proglib Academy
Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механика. Нашли альтернативу 👇
❓ Что вернёт append при добавлении в nil-слайс
❓ Сравнимы ли две структуры через ==, если все их поля сравнимы
Repost from Proglib.academy | IT-курсы
🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентами
Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности ✔️
На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.
⚡️ Предзапись на осенний поток уже открыта
🏃♀️ Proglib Academy
